already_AddRefed<NativeFontResourceFontconfig> NativeFontResourceFontconfig::Create(uint8_t *aFontData, uint32_t aDataLength, FT_Library aFTLibrary) { if (!aFontData || !aDataLength) { return nullptr; } UniquePtr<uint8_t[]> fontData(new (fallible) uint8_t[aDataLength]); if (!fontData) { return nullptr; } memcpy(fontData.get(), aFontData, aDataLength); FT_Face face = Factory::NewFTFaceFromData(aFTLibrary, fontData.get(), aDataLength, 0); if (!face) { return nullptr; } if (FT_Select_Charmap(face, FT_ENCODING_UNICODE) != FT_Err_Ok) { Factory::ReleaseFTFace(face); return nullptr; } RefPtr<NativeFontResourceFontconfig> resource = new NativeFontResourceFontconfig(Move(fontData), face); return resource.forget(); }
void Font::setFontMads(const char *filename) { MadsPack fontData(filename, _vm); Common::SeekableReadStream *fontFile = fontData.getItemStream(0); _maxHeight = fontFile->readByte(); _maxWidth = fontFile->readByte(); _charWidths = new uint8[128]; // Char data is shifted by 1 _charWidths[0] = 0; fontFile->read(_charWidths + 1, 127); fontFile->readByte(); // remainder _charOffs = new uint16[128]; uint32 startOffs = 2 + 128 + 256; uint32 fontSize = fontFile->size() - startOffs; // Char data is shifted by 1 _charOffs[0] = 0; for (int i = 1; i < 128; i++) _charOffs[i] = fontFile->readUint16LE() - startOffs; fontFile->readUint16LE(); // remainder _charData = new uint8[fontSize]; fontFile->read(_charData, fontSize); delete fontFile; }
void TextRenderer::loadFontAtlas(float pixelDensity) { UPtr<unsigned char[]> fontData(IOUtils::readFromBinaryDataFile(FONT_FILE)); if (!fontData) { LOG_WARNING("Unable to load font data from " << FONT_FILE); return; } FontRangeMap fontRangeMap; FontRange smallRange; smallRange.fontSize = FONT_SIZE_SMALL * pixelDensity; smallRange.firstGlyph = FIRST_PRINTABLE_GLYPH; smallRange.numGlyphs = NUM_PRINTABLE_GLYPHS; fontRangeMap[FontType::Small] = smallRange; FontRange mediumRange; mediumRange.fontSize = FONT_SIZE_MEDIUM * pixelDensity; mediumRange.firstGlyph = FIRST_PRINTABLE_GLYPH; mediumRange.numGlyphs = NUM_PRINTABLE_GLYPHS; fontRangeMap[FontType::Medium] = mediumRange; FontRange largeNumberRange; largeNumberRange.fontSize = FONT_SIZE_LARGE * pixelDensity; largeNumberRange.firstGlyph = FIRST_NUMERIC_GLYPH; largeNumberRange.numGlyphs = NUM_NUMERIC_GLYPHS; fontRangeMap[FontType::LargeNumber] = largeNumberRange; atlas = UPtr<FontAtlas>(new FontAtlas(BITMAP_SIZE * pixelDensity, fontRangeMap, fontData.get())); textureMaterial->setTexture(atlas->texture); this->pixelDensity = pixelDensity; }
void SkFontDescriptor::serialize(SkWStream* stream) { stream->writePackedUInt(fStyle); write_string(stream, fFamilyName, kFontFamilyName); write_string(stream, fFullName, kFullName); write_string(stream, fPostscriptName, kPostscriptName); if (fFontData.get()) { if (fFontData->getIndex()) { write_uint(stream, fFontData->getIndex(), kFontIndex); } if (fFontData->getAxisCount()) { write_uint(stream, fFontData->getAxisCount(), kFontAxes); for (int i = 0; i < fFontData->getAxisCount(); ++i) { stream->writePackedUInt(fFontData->getAxis()[i]); } } } stream->writePackedUInt(kSentinel); if (fFontData.get() && fFontData->hasStream()) { SkAutoTDelete<SkStreamAsset> fontData(fFontData->detachStream()); size_t length = fontData->getLength(); stream->writePackedUInt(length); stream->writeStream(fontData, length); } else { stream->writePackedUInt(0); } }
bool UnscaledFontGDI::GetFontFileData(FontFileDataOutput aDataCallback, void *aBaton) { AutoDC dc; AutoSelectFont font(dc.GetDC(), &mLogFont); // Check for a font collection first. uint32_t table = 0x66637474; // 'ttcf' uint32_t tableSize = ::GetFontData(dc.GetDC(), table, 0, nullptr, 0); if (tableSize == GDI_ERROR) { // Try as if just a single font. table = 0; tableSize = ::GetFontData(dc.GetDC(), table, 0, nullptr, 0); if (tableSize == GDI_ERROR) { return false; } } UniquePtr<uint8_t[]> fontData(new uint8_t[tableSize]); uint32_t sizeGot = ::GetFontData(dc.GetDC(), table, 0, fontData.get(), tableSize); if (sizeGot != tableSize) { return false; } aDataCallback(fontData.get(), tableSize, 0, aBaton); return true; }
bool ScaledFontWin::GetFontFileData(FontFileDataOutput aDataCallback, void *aBaton) { AutoDC dc; AutoSelectFont font(dc.GetDC(), &mLogFont); // Check for a font collection first. uint32_t table = 0x66637474; // 'ttcf' uint32_t tableSize = ::GetFontData(dc.GetDC(), table, 0, nullptr, 0); if (tableSize == GDI_ERROR) { // Try as if just a single font. table = 0; tableSize = ::GetFontData(dc.GetDC(), table, 0, nullptr, 0); if (tableSize == GDI_ERROR) { return false; } } UniquePtr<uint8_t[]> fontData(new uint8_t[tableSize]); uint32_t sizeGot = ::GetFontData(dc.GetDC(), table, 0, fontData.get(), tableSize); if (sizeGot != tableSize) { return false; } // If it's a font collection then attempt to get the index. uint32_t index = 0; if (table != 0) { UniquePtr<SFNTData> sfntData = SFNTData::Create(fontData.get(), tableSize); if (!sfntData) { gfxWarning() << "Failed to create SFNTData for GetFontFileData."; return false; } // We cast here because for VS2015 char16_t != wchar_t, even though they are // both 16 bit. if (!sfntData->GetIndexForU16Name( reinterpret_cast<char16_t*>(mLogFont.lfFaceName), &index, LF_FACESIZE - 1)) { gfxWarning() << "Failed to get index for face name."; gfxDevCrash(LogReason::GetFontFileDataFailed) << "Failed to get index for face name |" << NS_ConvertUTF16toUTF8(mLogFont.lfFaceName).get() << "|."; return false; } } aDataCallback(fontData.get(), tableSize, index, mSize, aBaton); return true; }
DEF_TEST(FontHostStream, reporter) { { SkPaint paint; paint.setColor(SK_ColorGRAY); paint.setTextSize(SkIntToScalar(30)); SkTypeface* fTypeface = SkTypeface::CreateFromName("Georgia", SkTypeface::kNormal); SkSafeUnref(paint.setTypeface(fTypeface)); SkIRect origRect = SkIRect::MakeWH(64, 64); SkBitmap origBitmap; create(&origBitmap, origRect); SkCanvas origCanvas(origBitmap); SkIRect streamRect = SkIRect::MakeWH(64, 64); SkBitmap streamBitmap; create(&streamBitmap, streamRect); SkCanvas streamCanvas(streamBitmap); SkPoint point = SkPoint::Make(24, 32); // Test: origTypeface and streamTypeface from orig data draw the same drawBG(&origCanvas); origCanvas.drawText("A", 1, point.fX, point.fY, paint); SkTypeface* origTypeface = paint.getTypeface(); SkAutoTUnref<SkTypeface> aur; if (NULL == origTypeface) { origTypeface = aur.reset(SkTypeface::RefDefault()); } int ttcIndex; SkAutoTDelete<SkStreamAsset> fontData(origTypeface->openStream(&ttcIndex)); SkTypeface* streamTypeface = SkTypeface::CreateFromStream(fontData.detach()); SkFontDescriptor desc; bool isLocalStream = false; streamTypeface->getFontDescriptor(&desc, &isLocalStream); REPORTER_ASSERT(reporter, isLocalStream); SkSafeUnref(paint.setTypeface(streamTypeface)); drawBG(&streamCanvas); streamCanvas.drawPosText("A", 1, &point, paint); REPORTER_ASSERT(reporter, compare(origBitmap, origRect, streamBitmap, streamRect)); } //Make sure the typeface is deleted and removed. SkGraphics::PurgeFontCache(); }
FontSurface *FontSurface::createFontSurface(NeverhoodEngine *vm, uint32 fileHash) { FontSurface *fontSurface; DataResource fontData(vm); SpriteResource fontSprite(vm); fontData.load(calcHash("asRecFont")); uint16 numRows = fontData.getPoint(calcHash("meNumRows")).x; uint16 firstChar = fontData.getPoint(calcHash("meFirstChar")).x; uint16 charWidth = fontData.getPoint(calcHash("meCharWidth")).x; uint16 charHeight = fontData.getPoint(calcHash("meCharHeight")).x; NPointArray *tracking = fontData.getPointArray(calcHash("meTracking")); fontSprite.load(fileHash, true); fontSurface = new FontSurface(vm, tracking, 16, numRows, firstChar, charWidth, charHeight); fontSurface->drawSpriteResourceEx(fontSprite, false, false, 0, 0); return fontSurface; }
static sk_sp<SkPDFStream> get_subset_font_stream( std::unique_ptr<SkStreamAsset> fontAsset, const SkBitSet& glyphUsage, const char* fontName, int ttcIndex) { // Generate glyph id array in format needed by sfntly. // TODO(halcanary): sfntly should take a more compact format. SkTDArray<unsigned> subset; if (!glyphUsage.has(0)) { subset.push(0); // Always include glyph 0. } glyphUsage.exportTo(&subset); unsigned char* subsetFont{nullptr}; sk_sp<SkData> fontData(stream_to_data(std::move(fontAsset))); #if defined(SK_BUILD_FOR_GOOGLE3) // TODO(halcanary): update SK_BUILD_FOR_GOOGLE3 to newest version of Sfntly. (void)ttcIndex; int subsetFontSize = SfntlyWrapper::SubsetFont(fontName, fontData->bytes(), fontData->size(), subset.begin(), subset.count(), &subsetFont); #else (void)fontName; int subsetFontSize = SfntlyWrapper::SubsetFont(ttcIndex, fontData->bytes(), fontData->size(), subset.begin(), subset.count(), &subsetFont); #endif fontData.reset(); subset.reset(); SkASSERT(subsetFontSize > 0 || subsetFont == nullptr); if (subsetFontSize < 1) { return nullptr; } SkASSERT(subsetFont != nullptr); auto subsetStream = sk_make_sp<SkPDFStream>( SkData::MakeWithProc( subsetFont, subsetFontSize, [](const void* p, void*) { delete[] (unsigned char*)p; }, nullptr)); subsetStream->dict()->insertInt("Length1", subsetFontSize); return subsetStream; }
wxFontDataProperty::wxFontDataProperty( const wxString& label, const wxString& name, const wxFontData& value ) : wxFontProperty(label,name,value.GetInitialFont()) { wxFontData fontData(value); // Fix value. fontData.SetChosenFont(value.GetInitialFont()); if ( !fontData.GetColour().IsOk() ) fontData.SetColour(*wxBLACK); // Set initial value - should be done in a simpler way like this // (instead of calling SetValue) in derived (wxObject) properties. m_value_wxFontData << value; // Add extra children. AddPrivateChild( new wxColourProperty(_("Colour"), wxPG_LABEL, fontData.GetColour() ) ); }
/// a specialized init function so font-awesome is loaded and initialized /// this method return true on success, it will return false if the fnot cannot be initialized /// To initialize QtAwesome with font-awesome you need to call this method bool QtAwesome::initFontAwesome( ) { static int fontAwesomeFontId = -1; // only load font-awesome once if( fontAwesomeFontId < 0 ) { // The macro below internally calls "qInitResources_QtAwesome()". this initializes // the resource system. For a .pri project this isn't required, but when building and using a // static library the resource need to initialized first. /// // I've checked th qInitResource_* code and calling this method mutliple times shouldn't be any problem // (More info about this subject: http://qt-project.org/wiki/QtResources) Q_INIT_RESOURCE(QtAwesome); // load the font file QFile res(":/fonts/fontawesome-4.4.0.ttf"); if(!res.open(QIODevice::ReadOnly)) { qDebug() << "Font awesome font could not be loaded!"; return false; } QByteArray fontData( res.readAll() ); res.close(); // fetch the given font fontAwesomeFontId = QFontDatabase::addApplicationFontFromData(fontData); } QStringList loadedFontFamilies = QFontDatabase::applicationFontFamilies(fontAwesomeFontId); if( !loadedFontFamilies.empty() ) { fontName_= loadedFontFamilies.at(0); } else { qDebug() << "Font awesome font is empty?!"; fontAwesomeFontId = -1; // restore the font-awesome id return false; } // intialize the map QHash<QString, int>& m = namedCodepoints_; m.insert("fa_500px", fa::fa_500px ); m.insert("adjust", fa::adjust ); m.insert("adn", fa::adn ); m.insert("aligncenter", fa::aligncenter ); m.insert("alignjustify", fa::alignjustify ); m.insert("alignleft", fa::alignleft ); m.insert("alignright", fa::alignright ); m.insert("amazon", fa::amazon ); m.insert("ambulance", fa::ambulance ); m.insert("anchor", fa::anchor ); m.insert("android", fa::android ); m.insert("angellist", fa::angellist ); m.insert("angledoubledown", fa::angledoubledown ); m.insert("angledoubleleft", fa::angledoubleleft ); m.insert("angledoubleright", fa::angledoubleright ); m.insert("angledoubleup", fa::angledoubleup ); m.insert("angledown", fa::angledown ); m.insert("angleleft", fa::angleleft ); m.insert("angleright", fa::angleright ); m.insert("angleup", fa::angleup ); m.insert("apple", fa::apple ); m.insert("archive", fa::archive ); m.insert("areachart", fa::areachart ); m.insert("arrowcircledown", fa::arrowcircledown ); m.insert("arrowcircleleft", fa::arrowcircleleft ); m.insert("arrowcircleodown", fa::arrowcircleodown ); m.insert("arrowcircleoleft", fa::arrowcircleoleft ); m.insert("arrowcircleoright", fa::arrowcircleoright ); m.insert("arrowcircleoup", fa::arrowcircleoup ); m.insert("arrowcircleright", fa::arrowcircleright ); m.insert("arrowcircleup", fa::arrowcircleup ); m.insert("arrowdown", fa::arrowdown ); m.insert("arrowleft", fa::arrowleft ); m.insert("arrowright", fa::arrowright ); m.insert("arrowup", fa::arrowup ); m.insert("arrows", fa::arrows ); m.insert("arrowsalt", fa::arrowsalt ); m.insert("arrowsh", fa::arrowsh ); m.insert("arrowsv", fa::arrowsv ); m.insert("asterisk", fa::asterisk ); m.insert("at", fa::at ); m.insert("automobile", fa::automobile ); m.insert("backward", fa::backward ); m.insert("balancescale", fa::balancescale ); m.insert("ban", fa::ban ); m.insert("bank", fa::bank ); m.insert("barchart", fa::barchart ); m.insert("barcharto", fa::barcharto ); m.insert("barcode", fa::barcode ); m.insert("bars", fa::bars ); m.insert("battery0", fa::battery0 ); m.insert("battery1", fa::battery1 ); m.insert("battery2", fa::battery2 ); m.insert("battery3", fa::battery3 ); m.insert("battery4", fa::battery4 ); m.insert("batteryempty", fa::batteryempty ); m.insert("batteryfull", fa::batteryfull ); m.insert("batteryhalf", fa::batteryhalf ); m.insert("batteryquarter", fa::batteryquarter ); m.insert("batterythreequarters", fa::batterythreequarters ); m.insert("bed", fa::bed ); m.insert("beer", fa::beer ); m.insert("behance", fa::behance ); m.insert("behancesquare", fa::behancesquare ); m.insert("bell", fa::bell ); m.insert("bello", fa::bello ); m.insert("bellslash", fa::bellslash ); m.insert("bellslasho", fa::bellslasho ); m.insert("bicycle", fa::bicycle ); m.insert("binoculars", fa::binoculars ); m.insert("birthdaycake", fa::birthdaycake ); m.insert("bitbucket", fa::bitbucket ); m.insert("bitbucketsquare", fa::bitbucketsquare ); m.insert("bitcoin", fa::bitcoin ); m.insert("blacktie", fa::blacktie ); m.insert("bold", fa::bold ); m.insert("bolt", fa::bolt ); m.insert("bomb", fa::bomb ); m.insert("book", fa::book ); m.insert("bookmark", fa::bookmark ); m.insert("bookmarko", fa::bookmarko ); m.insert("briefcase", fa::briefcase ); m.insert("btc", fa::btc ); m.insert("bug", fa::bug ); m.insert("building", fa::building ); m.insert("buildingo", fa::buildingo ); m.insert("bullhorn", fa::bullhorn ); m.insert("bullseye", fa::bullseye ); m.insert("bus", fa::bus ); m.insert("buysellads", fa::buysellads ); m.insert("cab", fa::cab ); m.insert("calculator", fa::calculator ); m.insert("calendar", fa::calendar ); m.insert("calendarchecko", fa::calendarchecko ); m.insert("calendarminuso", fa::calendarminuso ); m.insert("calendaro", fa::calendaro ); m.insert("calendarpluso", fa::calendarpluso ); m.insert("calendartimeso", fa::calendartimeso ); m.insert("camera", fa::camera ); m.insert("cameraretro", fa::cameraretro ); m.insert("car", fa::car ); m.insert("caretdown", fa::caretdown ); m.insert("caretleft", fa::caretleft ); m.insert("caretright", fa::caretright ); m.insert("caretsquareodown", fa::caretsquareodown ); m.insert("caretsquareoleft", fa::caretsquareoleft ); m.insert("caretsquareoright", fa::caretsquareoright ); m.insert("caretsquareoup", fa::caretsquareoup ); m.insert("caretup", fa::caretup ); m.insert("cartarrowdown", fa::cartarrowdown ); m.insert("cartplus", fa::cartplus ); m.insert("cc", fa::cc ); m.insert("ccamex", fa::ccamex ); m.insert("ccdinersclub", fa::ccdinersclub ); m.insert("ccdiscover", fa::ccdiscover ); m.insert("ccjcb", fa::ccjcb ); m.insert("ccmastercard", fa::ccmastercard ); m.insert("ccpaypal", fa::ccpaypal ); m.insert("ccstripe", fa::ccstripe ); m.insert("ccvisa", fa::ccvisa ); m.insert("certificate", fa::certificate ); m.insert("chain", fa::chain ); m.insert("chainbroken", fa::chainbroken ); m.insert("check", fa::check ); m.insert("checkcircle", fa::checkcircle ); m.insert("checkcircleo", fa::checkcircleo ); m.insert("checksquare", fa::checksquare ); m.insert("checksquareo", fa::checksquareo ); m.insert("chevroncircledown", fa::chevroncircledown ); m.insert("chevroncircleleft", fa::chevroncircleleft ); m.insert("chevroncircleright", fa::chevroncircleright ); m.insert("chevroncircleup", fa::chevroncircleup ); m.insert("chevrondown", fa::chevrondown ); m.insert("chevronleft", fa::chevronleft ); m.insert("chevronright", fa::chevronright ); m.insert("chevronup", fa::chevronup ); m.insert("child", fa::child ); m.insert("chrome", fa::chrome ); m.insert("circle", fa::circle ); m.insert("circleo", fa::circleo ); m.insert("circleonotch", fa::circleonotch ); m.insert("circlethin", fa::circlethin ); m.insert("clipboard", fa::clipboard ); m.insert("clocko", fa::clocko ); m.insert("clone", fa::clone ); m.insert("close", fa::close ); m.insert("cloud", fa::cloud ); m.insert("clouddownload", fa::clouddownload ); m.insert("cloudupload", fa::cloudupload ); m.insert("cny", fa::cny ); m.insert("code", fa::code ); m.insert("codefork", fa::codefork ); m.insert("codepen", fa::codepen ); m.insert("coffee", fa::coffee ); m.insert("cog", fa::cog ); m.insert("cogs", fa::cogs ); m.insert("columns", fa::columns ); m.insert("comment", fa::comment ); m.insert("commento", fa::commento ); m.insert("commenting", fa::commenting ); m.insert("commentingo", fa::commentingo ); m.insert("comments", fa::comments ); m.insert("commentso", fa::commentso ); m.insert("compass", fa::compass ); m.insert("compress", fa::compress ); m.insert("connectdevelop", fa::connectdevelop ); m.insert("contao", fa::contao ); m.insert("copy", fa::copy ); m.insert("copyright", fa::copyright ); m.insert("creativecommons", fa::creativecommons ); m.insert("creditcard", fa::creditcard ); m.insert("crop", fa::crop ); m.insert("crosshairs", fa::crosshairs ); m.insert("css3", fa::css3 ); m.insert("cube", fa::cube ); m.insert("cubes", fa::cubes ); m.insert("cut", fa::cut ); m.insert("cutlery", fa::cutlery ); m.insert("dashboard", fa::dashboard ); m.insert("dashcube", fa::dashcube ); m.insert("database", fa::database ); m.insert("dedent", fa::dedent ); m.insert("delicious", fa::delicious ); m.insert("desktop", fa::desktop ); m.insert("deviantart", fa::deviantart ); m.insert("diamond", fa::diamond ); m.insert("digg", fa::digg ); m.insert("dollar", fa::dollar ); m.insert("dotcircleo", fa::dotcircleo ); m.insert("download", fa::download ); m.insert("dribbble", fa::dribbble ); m.insert("dropbox", fa::dropbox ); m.insert("drupal", fa::drupal ); m.insert("edit", fa::edit ); m.insert("eject", fa::eject ); m.insert("ellipsish", fa::ellipsish ); m.insert("ellipsisv", fa::ellipsisv ); m.insert("empire", fa::empire ); m.insert("envelope", fa::envelope ); m.insert("envelopeo", fa::envelopeo ); m.insert("envelopesquare", fa::envelopesquare ); m.insert("eraser", fa::eraser ); m.insert("eur", fa::eur ); m.insert("euro", fa::euro ); m.insert("exchange", fa::exchange ); m.insert("exclamation", fa::exclamation ); m.insert("exclamationcircle", fa::exclamationcircle ); m.insert("exclamationtriangle", fa::exclamationtriangle ); m.insert("expand", fa::expand ); m.insert("expeditedssl", fa::expeditedssl ); m.insert("externallink", fa::externallink ); m.insert("externallinksquare", fa::externallinksquare ); m.insert("eye", fa::eye ); m.insert("eyeslash", fa::eyeslash ); m.insert("eyedropper", fa::eyedropper ); m.insert("facebook", fa::facebook ); m.insert("facebookf", fa::facebookf ); m.insert("facebookofficial", fa::facebookofficial ); m.insert("facebooksquare", fa::facebooksquare ); m.insert("fastbackward", fa::fastbackward ); m.insert("fastforward", fa::fastforward ); m.insert("fax", fa::fax ); m.insert("feed", fa::feed ); m.insert("female", fa::female ); m.insert("fighterjet", fa::fighterjet ); m.insert("file", fa::file ); m.insert("filearchiveo", fa::filearchiveo ); m.insert("fileaudioo", fa::fileaudioo ); m.insert("filecodeo", fa::filecodeo ); m.insert("fileexcelo", fa::fileexcelo ); m.insert("fileimageo", fa::fileimageo ); m.insert("filemovieo", fa::filemovieo ); m.insert("fileo", fa::fileo ); m.insert("filepdfo", fa::filepdfo ); m.insert("filephotoo", fa::filephotoo ); m.insert("filepictureo", fa::filepictureo ); m.insert("filepowerpointo", fa::filepowerpointo ); m.insert("filesoundo", fa::filesoundo ); m.insert("filetext", fa::filetext ); m.insert("filetexto", fa::filetexto ); m.insert("filevideoo", fa::filevideoo ); m.insert("filewordo", fa::filewordo ); m.insert("filezipo", fa::filezipo ); m.insert("fileso", fa::fileso ); m.insert("film", fa::film ); m.insert("filter", fa::filter ); m.insert("fire", fa::fire ); m.insert("fireextinguisher", fa::fireextinguisher ); m.insert("firefox", fa::firefox ); m.insert("flag", fa::flag ); m.insert("flagcheckered", fa::flagcheckered ); m.insert("flago", fa::flago ); m.insert("flash", fa::flash ); m.insert("flask", fa::flask ); m.insert("flickr", fa::flickr ); m.insert("floppyo", fa::floppyo ); m.insert("folder", fa::folder ); m.insert("foldero", fa::foldero ); m.insert("folderopen", fa::folderopen ); m.insert("folderopeno", fa::folderopeno ); m.insert("font", fa::font ); m.insert("fonticons", fa::fonticons ); m.insert("forumbee", fa::forumbee ); m.insert("forward", fa::forward ); m.insert("foursquare", fa::foursquare ); m.insert("frowno", fa::frowno ); m.insert("futbolo", fa::futbolo ); m.insert("gamepad", fa::gamepad ); m.insert("gavel", fa::gavel ); m.insert("gbp", fa::gbp ); m.insert("ge", fa::ge ); m.insert("gear", fa::gear ); m.insert("gears", fa::gears ); m.insert("genderless", fa::genderless ); m.insert("getpocket", fa::getpocket ); m.insert("gg", fa::gg ); m.insert("ggcircle", fa::ggcircle ); m.insert("gift", fa::gift ); m.insert("git", fa::git ); m.insert("gitsquare", fa::gitsquare ); m.insert("github", fa::github ); m.insert("githubalt", fa::githubalt ); m.insert("githubsquare", fa::githubsquare ); m.insert("gittip", fa::gittip ); m.insert("glass", fa::glass ); m.insert("globe", fa::globe ); m.insert("google", fa::google ); m.insert("googleplus", fa::googleplus ); m.insert("googleplussquare", fa::googleplussquare ); m.insert("googlewallet", fa::googlewallet ); m.insert("graduationcap", fa::graduationcap ); m.insert("gratipay", fa::gratipay ); m.insert("group", fa::group ); m.insert("hsquare", fa::hsquare ); m.insert("hackernews", fa::hackernews ); m.insert("handgrabo", fa::handgrabo ); m.insert("handlizardo", fa::handlizardo ); m.insert("handodown", fa::handodown ); m.insert("handoleft", fa::handoleft ); m.insert("handoright", fa::handoright ); m.insert("handoup", fa::handoup ); m.insert("handpapero", fa::handpapero ); m.insert("handpeaceo", fa::handpeaceo ); m.insert("handpointero", fa::handpointero ); m.insert("handrocko", fa::handrocko ); m.insert("handscissorso", fa::handscissorso ); m.insert("handspocko", fa::handspocko ); m.insert("handstopo", fa::handstopo ); m.insert("hddo", fa::hddo ); m.insert("header", fa::header ); m.insert("headphones", fa::headphones ); m.insert("heart", fa::heart ); m.insert("hearto", fa::hearto ); m.insert("heartbeat", fa::heartbeat ); m.insert("history", fa::history ); m.insert("home", fa::home ); m.insert("hospitalo", fa::hospitalo ); m.insert("hotel", fa::hotel ); m.insert("hourglass", fa::hourglass ); m.insert("hourglass1", fa::hourglass1 ); m.insert("hourglass2", fa::hourglass2 ); m.insert("hourglass3", fa::hourglass3 ); m.insert("hourglassend", fa::hourglassend ); m.insert("hourglasshalf", fa::hourglasshalf ); m.insert("hourglasso", fa::hourglasso ); m.insert("hourglassstart", fa::hourglassstart ); m.insert("houzz", fa::houzz ); m.insert("html5", fa::html5 ); m.insert("icursor", fa::icursor ); m.insert("ils", fa::ils ); m.insert("image", fa::image ); m.insert("inbox", fa::inbox ); m.insert("indent", fa::indent ); m.insert("industry", fa::industry ); m.insert("info", fa::info ); m.insert("infocircle", fa::infocircle ); m.insert("inr", fa::inr ); m.insert("instagram", fa::instagram ); m.insert("institution", fa::institution ); m.insert("internetexplorer", fa::internetexplorer ); m.insert("intersex", fa::intersex ); m.insert("ioxhost", fa::ioxhost ); m.insert("italic", fa::italic ); m.insert("joomla", fa::joomla ); m.insert("jpy", fa::jpy ); m.insert("jsfiddle", fa::jsfiddle ); m.insert("key", fa::key ); m.insert("keyboardo", fa::keyboardo ); m.insert("krw", fa::krw ); m.insert("language", fa::language ); m.insert("laptop", fa::laptop ); m.insert("lastfm", fa::lastfm ); m.insert("lastfmsquare", fa::lastfmsquare ); m.insert("leaf", fa::leaf ); m.insert("leanpub", fa::leanpub ); m.insert("legal", fa::legal ); m.insert("lemono", fa::lemono ); m.insert("leveldown", fa::leveldown ); m.insert("levelup", fa::levelup ); m.insert("lifebouy", fa::lifebouy ); m.insert("lifebuoy", fa::lifebuoy ); m.insert("lifering", fa::lifering ); m.insert("lifesaver", fa::lifesaver ); m.insert("lightbulbo", fa::lightbulbo ); m.insert("linechart", fa::linechart ); m.insert("link", fa::link ); m.insert("linkedin", fa::linkedin ); m.insert("linkedinsquare", fa::linkedinsquare ); m.insert("linux", fa::linux ); m.insert("list", fa::list ); m.insert("listalt", fa::listalt ); m.insert("listol", fa::listol ); m.insert("listul", fa::listul ); m.insert("locationarrow", fa::locationarrow ); m.insert("lock", fa::lock ); m.insert("longarrowdown", fa::longarrowdown ); m.insert("longarrowleft", fa::longarrowleft ); m.insert("longarrowright", fa::longarrowright ); m.insert("longarrowup", fa::longarrowup ); m.insert("magic", fa::magic ); m.insert("magnet", fa::magnet ); m.insert("mailforward", fa::mailforward ); m.insert("mailreply", fa::mailreply ); m.insert("mailreplyall", fa::mailreplyall ); m.insert("male", fa::male ); m.insert("map", fa::map ); m.insert("mapmarker", fa::mapmarker ); m.insert("mapo", fa::mapo ); m.insert("mappin", fa::mappin ); m.insert("mapsigns", fa::mapsigns ); m.insert("mars", fa::mars ); m.insert("marsdouble", fa::marsdouble ); m.insert("marsstroke", fa::marsstroke ); m.insert("marsstrokeh", fa::marsstrokeh ); m.insert("marsstrokev", fa::marsstrokev ); m.insert("maxcdn", fa::maxcdn ); m.insert("meanpath", fa::meanpath ); m.insert("medium", fa::medium ); m.insert("medkit", fa::medkit ); m.insert("meho", fa::meho ); m.insert("mercury", fa::mercury ); m.insert("microphone", fa::microphone ); m.insert("microphoneslash", fa::microphoneslash ); m.insert("minus", fa::minus ); m.insert("minuscircle", fa::minuscircle ); m.insert("minussquare", fa::minussquare ); m.insert("minussquareo", fa::minussquareo ); m.insert("mobile", fa::mobile ); m.insert("mobilephone", fa::mobilephone ); m.insert("money", fa::money ); m.insert("moono", fa::moono ); m.insert("mortarboard", fa::mortarboard ); m.insert("motorcycle", fa::motorcycle ); m.insert("mousepointer", fa::mousepointer ); m.insert("music", fa::music ); m.insert("navicon", fa::navicon ); m.insert("neuter", fa::neuter ); m.insert("newspapero", fa::newspapero ); m.insert("objectgroup", fa::objectgroup ); m.insert("objectungroup", fa::objectungroup ); m.insert("odnoklassniki", fa::odnoklassniki ); m.insert("odnoklassnikisquare", fa::odnoklassnikisquare ); m.insert("opencart", fa::opencart ); m.insert("openid", fa::openid ); m.insert("opera", fa::opera ); m.insert("optinmonster", fa::optinmonster ); m.insert("outdent", fa::outdent ); m.insert("pagelines", fa::pagelines ); m.insert("paintbrush", fa::paintbrush ); m.insert("paperplane", fa::paperplane ); m.insert("paperplaneo", fa::paperplaneo ); m.insert("paperclip", fa::paperclip ); m.insert("paragraph", fa::paragraph ); m.insert("paste", fa::paste ); m.insert("pause", fa::pause ); m.insert("paw", fa::paw ); m.insert("paypal", fa::paypal ); m.insert("pencil", fa::pencil ); m.insert("pencilsquare", fa::pencilsquare ); m.insert("pencilsquareo", fa::pencilsquareo ); m.insert("phone", fa::phone ); m.insert("phonesquare", fa::phonesquare ); m.insert("photo", fa::photo ); m.insert("pictureo", fa::pictureo ); m.insert("piechart", fa::piechart ); m.insert("piedpiper", fa::piedpiper ); m.insert("piedpiperalt", fa::piedpiperalt ); m.insert("pinterest", fa::pinterest ); m.insert("pinterestp", fa::pinterestp ); m.insert("pinterestsquare", fa::pinterestsquare ); m.insert("plane", fa::plane ); m.insert("play", fa::play ); m.insert("playcircle", fa::playcircle ); m.insert("playcircleo", fa::playcircleo ); m.insert("plug", fa::plug ); m.insert("plus", fa::plus ); m.insert("pluscircle", fa::pluscircle ); m.insert("plussquare", fa::plussquare ); m.insert("plussquareo", fa::plussquareo ); m.insert("poweroff", fa::poweroff ); m.insert("print", fa::print ); m.insert("puzzlepiece", fa::puzzlepiece ); m.insert("qq", fa::qq ); m.insert("qrcode", fa::qrcode ); m.insert("question", fa::question ); m.insert("questioncircle", fa::questioncircle ); m.insert("quoteleft", fa::quoteleft ); m.insert("quoteright", fa::quoteright ); m.insert("ra", fa::ra ); m.insert("random", fa::random ); m.insert("rebel", fa::rebel ); m.insert("recycle", fa::recycle ); m.insert("reddit", fa::reddit ); m.insert("redditsquare", fa::redditsquare ); m.insert("refresh", fa::refresh ); m.insert("registered", fa::registered ); m.insert("remove", fa::remove ); m.insert("renren", fa::renren ); m.insert("reorder", fa::reorder ); m.insert("repeat", fa::repeat ); m.insert("reply", fa::reply ); m.insert("replyall", fa::replyall ); m.insert("retweet", fa::retweet ); m.insert("rmb", fa::rmb ); m.insert("road", fa::road ); m.insert("rocket", fa::rocket ); m.insert("rotateleft", fa::rotateleft ); m.insert("rotateright", fa::rotateright ); m.insert("rouble", fa::rouble ); m.insert("rss", fa::rss ); m.insert("rsssquare", fa::rsssquare ); m.insert("rub", fa::rub ); m.insert("ruble", fa::ruble ); m.insert("rupee", fa::rupee ); m.insert("safari", fa::safari ); m.insert("save", fa::save ); m.insert("scissors", fa::scissors ); m.insert("search", fa::search ); m.insert("searchminus", fa::searchminus ); m.insert("searchplus", fa::searchplus ); m.insert("sellsy", fa::sellsy ); m.insert("send", fa::send ); m.insert("sendo", fa::sendo ); m.insert("server", fa::server ); m.insert("share", fa::share ); m.insert("sharealt", fa::sharealt ); m.insert("sharealtsquare", fa::sharealtsquare ); m.insert("sharesquare", fa::sharesquare ); m.insert("sharesquareo", fa::sharesquareo ); m.insert("shekel", fa::shekel ); m.insert("sheqel", fa::sheqel ); m.insert("shield", fa::shield ); m.insert("ship", fa::ship ); m.insert("shirtsinbulk", fa::shirtsinbulk ); m.insert("shoppingcart", fa::shoppingcart ); m.insert("signin", fa::signin ); m.insert("signout", fa::signout ); m.insert("signal", fa::signal ); m.insert("simplybuilt", fa::simplybuilt ); m.insert("sitemap", fa::sitemap ); m.insert("skyatlas", fa::skyatlas ); m.insert("skype", fa::skype ); m.insert("slack", fa::slack ); m.insert("sliders", fa::sliders ); m.insert("slideshare", fa::slideshare ); m.insert("smileo", fa::smileo ); m.insert("soccerballo", fa::soccerballo ); m.insert("sort", fa::sort ); m.insert("sortalphaasc", fa::sortalphaasc ); m.insert("sortalphadesc", fa::sortalphadesc ); m.insert("sortamountasc", fa::sortamountasc ); m.insert("sortamountdesc", fa::sortamountdesc ); m.insert("sortasc", fa::sortasc ); m.insert("sortdesc", fa::sortdesc ); m.insert("sortdown", fa::sortdown ); m.insert("sortnumericasc", fa::sortnumericasc ); m.insert("sortnumericdesc", fa::sortnumericdesc ); m.insert("sortup", fa::sortup ); m.insert("soundcloud", fa::soundcloud ); m.insert("spaceshuttle", fa::spaceshuttle ); m.insert("spinner", fa::spinner ); m.insert("spoon", fa::spoon ); m.insert("spotify", fa::spotify ); m.insert("square", fa::square ); m.insert("squareo", fa::squareo ); m.insert("stackexchange", fa::stackexchange ); m.insert("stackoverflow", fa::stackoverflow ); m.insert("star", fa::star ); m.insert("starhalf", fa::starhalf ); m.insert("starhalfempty", fa::starhalfempty ); m.insert("starhalffull", fa::starhalffull ); m.insert("starhalfo", fa::starhalfo ); m.insert("staro", fa::staro ); m.insert("steam", fa::steam ); m.insert("steamsquare", fa::steamsquare ); m.insert("stepbackward", fa::stepbackward ); m.insert("stepforward", fa::stepforward ); m.insert("stethoscope", fa::stethoscope ); m.insert("stickynote", fa::stickynote ); m.insert("stickynoteo", fa::stickynoteo ); m.insert("stop", fa::stop ); m.insert("streetview", fa::streetview ); m.insert("strikethrough", fa::strikethrough ); m.insert("stumbleupon", fa::stumbleupon ); m.insert("stumbleuponcircle", fa::stumbleuponcircle ); m.insert("subscript", fa::subscript ); m.insert("subway", fa::subway ); m.insert("suitcase", fa::suitcase ); m.insert("suno", fa::suno ); m.insert("superscript", fa::superscript ); m.insert("support", fa::support ); m.insert("table", fa::table ); m.insert("tablet", fa::tablet ); m.insert("tachometer", fa::tachometer ); m.insert("tag", fa::tag ); m.insert("tags", fa::tags ); m.insert("tasks", fa::tasks ); m.insert("taxi", fa::taxi ); m.insert("television", fa::television ); m.insert("tencentweibo", fa::tencentweibo ); m.insert("terminal", fa::terminal ); m.insert("textheight", fa::textheight ); m.insert("textwidth", fa::textwidth ); m.insert("th", fa::th ); m.insert("thlarge", fa::thlarge ); m.insert("thlist", fa::thlist ); m.insert("thumbtack", fa::thumbtack ); m.insert("thumbsdown", fa::thumbsdown ); m.insert("thumbsodown", fa::thumbsodown ); m.insert("thumbsoup", fa::thumbsoup ); m.insert("thumbsup", fa::thumbsup ); m.insert("ticket", fa::ticket ); m.insert("times", fa::times ); m.insert("timescircle", fa::timescircle ); m.insert("timescircleo", fa::timescircleo ); m.insert("tint", fa::tint ); m.insert("toggledown", fa::toggledown ); m.insert("toggleleft", fa::toggleleft ); m.insert("toggleoff", fa::toggleoff ); m.insert("toggleon", fa::toggleon ); m.insert("toggleright", fa::toggleright ); m.insert("toggleup", fa::toggleup ); m.insert("trademark", fa::trademark ); m.insert("train", fa::train ); m.insert("transgender", fa::transgender ); m.insert("transgenderalt", fa::transgenderalt ); m.insert("trash", fa::trash ); m.insert("trasho", fa::trasho ); m.insert("tree", fa::tree ); m.insert("trello", fa::trello ); m.insert("tripadvisor", fa::tripadvisor ); m.insert("trophy", fa::trophy ); m.insert("truck", fa::truck ); m.insert("fa_try", fa::fa_try ); m.insert("tty", fa::tty ); m.insert("tumblr", fa::tumblr ); m.insert("tumblrsquare", fa::tumblrsquare ); m.insert("turkishlira", fa::turkishlira ); m.insert("tv", fa::tv ); m.insert("twitch", fa::twitch ); m.insert("twitter", fa::twitter ); m.insert("twittersquare", fa::twittersquare ); m.insert("umbrella", fa::umbrella ); m.insert("underline", fa::underline ); m.insert("undo", fa::undo ); m.insert("university", fa::university ); m.insert("unlink", fa::unlink ); m.insert("unlock", fa::unlock ); m.insert("unlockalt", fa::unlockalt ); m.insert("unsorted", fa::unsorted ); m.insert("upload", fa::upload ); m.insert("usd", fa::usd ); m.insert("user", fa::user ); m.insert("usermd", fa::usermd ); m.insert("userplus", fa::userplus ); m.insert("usersecret", fa::usersecret ); m.insert("usertimes", fa::usertimes ); m.insert("users", fa::users ); m.insert("venus", fa::venus ); m.insert("venusdouble", fa::venusdouble ); m.insert("venusmars", fa::venusmars ); m.insert("viacoin", fa::viacoin ); m.insert("videocamera", fa::videocamera ); m.insert("vimeo", fa::vimeo ); m.insert("vimeosquare", fa::vimeosquare ); m.insert("vine", fa::vine ); m.insert("vk", fa::vk ); m.insert("volumedown", fa::volumedown ); m.insert("volumeoff", fa::volumeoff ); m.insert("volumeup", fa::volumeup ); m.insert("warning", fa::warning ); m.insert("wechat", fa::wechat ); m.insert("weibo", fa::weibo ); m.insert("weixin", fa::weixin ); m.insert("whatsapp", fa::whatsapp ); m.insert("wheelchair", fa::wheelchair ); m.insert("wifi", fa::wifi ); m.insert("wikipediaw", fa::wikipediaw ); m.insert("windows", fa::windows ); m.insert("won", fa::won ); m.insert("wordpress", fa::wordpress ); m.insert("wrench", fa::wrench ); m.insert("xing", fa::xing ); m.insert("xingsquare", fa::xingsquare ); m.insert("ycombinator", fa::ycombinator ); m.insert("ycombinatorsquare", fa::ycombinatorsquare ); m.insert("yahoo", fa::yahoo ); m.insert("yc", fa::yc ); m.insert("ycsquare", fa::ycsquare ); m.insert("yelp", fa::yelp ); m.insert("yen", fa::yen ); m.insert("youtube", fa::youtube ); m.insert("youtubeplay", fa::youtubeplay ); m.insert("youtubesquare", fa::youtubesquare ); return true; }
void nsUnicodeFontMappingMac::InitByFontFamily(nsFont* aFont, nsIDeviceContext *aDeviceContext) { MyFontEnumData fontData(aDeviceContext, this); aFont->EnumerateFamilies(nsUnicodeFontMappingMac::FontEnumCallback, &fontData); }