📄 fontdatac.c
字号:
// Any width or add style BuildName(foundry, family, weight, "o", "*", "*", pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);// Italic BuildName(foundry, family, weight, "i", "*", "*", pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);// Any res, oblique BuildName(foundry, family, weight, "o", "*", "*", pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);// Any res, italic BuildName(foundry, family, weight, "i", "*", "*", pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);// Any foundry or family BuildName("*", "*", weight, "o", setWidth, addStyle, pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);// Italic BuildName("*", "*", weight, "i", setWidth, addStyle, pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);// Any res, oblique BuildName("*", "*", weight, "o", setWidth, addStyle, pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);// Any res, italic BuildName("*", "*", weight, "i", setWidth, addStyle, pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);// Any width or addStyle BuildName("*", "*", weight, "o", "*", "*", pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);// Italic BuildName("*", "*", weight, "i", "*", "*", pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);// Any res, oblique BuildName("*", "*", weight, "o", "*", "*", pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);// Any res, italic BuildName("*", "*", weight, "i", "*", "*", pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateItalic(iname);//// If nothing worked, return this font//#if 0 StringC errmsg("I could not find an italic version of the font: "); errmsg += name; halApp->PopupMessage(errmsg);#else if ( debug1 ) cout <<"I could not find an italic version of the font: " <<name<<endl;#endif italic = this; return italic;} // End Italic/*---------------------------------------------------------------------- * Method to create the specified italic font */FontDataC*FontDataC::CreateItalic(char *iname){//// Create a new font structure// if ( debug1 ) cout <<"Found italic font: " <<iname <<endl; italic = new FontDataC(iname); if ( !italic->loaded ) { delete italic; italic = this; } freeItalic = True; return italic;} // End CreateItalic/*---------------------------------------------------------------------- * Method to return a non-italic version of the current font */FontDataC*FontDataC::NonItalic(){ if ( !loaded && !nonItalic ) nonItalic = this;//// See if we already know this// if ( nonItalic ) return nonItalic;//// See if this is already a non-italic font// if ( !slant.Equals('o', IGNORE_CASE) && !slant.Equals('i', IGNORE_CASE) ) { nonItalic = this; return nonItalic; } if ( debug1 ) cout <<"Looking for a non-italic font for: " <<name <<endl;//// See if there is a non-italic version of this font.// StringC iname; BuildName(foundry, family, weight, "r", setWidth, addStyle, pixelSize, pointSize, resStr, spacing, avgWidth, charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Any width or add style BuildName(foundry, family, weight, "r", "*", "*", pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Any res BuildName(foundry, family, weight, "r", "*", "*", pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Point size only BuildName(foundry, family, weight, "r", "*", "*", "*", pointSize, resStr, spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Any res BuildName(foundry, family, weight, "r", "*", "*", "*", pointSize, "*", spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Pixel size only BuildName(foundry, family, weight, "r", "*", "*", pixelSize, "*", resStr, spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Any res BuildName(foundry, family, weight, "r", "*", "*", pixelSize, "*", "*", spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Any foundry or family BuildName("*", "*", weight, "r", setWidth, addStyle, pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Any res BuildName("*", "*", weight, "r", setWidth, addStyle, pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Any width or add style BuildName("*", "*", weight, "r", "*", "*", pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Any res BuildName("*", "*", weight, "r", "*", "*", pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Point size only BuildName("*", "*", weight, "r", "*", "*", "*", pointSize, resStr, spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Any res BuildName("*", "*", weight, "r", "*", "*", "*", pointSize, "*", spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Pixel size only BuildName("*", "*", weight, "r", "*", "*", pixelSize, "*", resStr, spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);// Any res BuildName("*", "*", weight, "r", "*", "*", pixelSize, "*", "*", spacing, "*", charset, iname); if ( FindFont(iname) ) return CreateNonItalic(iname);//// Try bigger fonts// BuildName(foundry, family, weight, "r", setWidth, addStyle, pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Any res BuildName(foundry, family, weight, "r", setWidth, addStyle, pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Any width or add style BuildName(foundry, family, weight, "r", "*", "*", pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Any res BuildName(foundry, family, weight, "r", "*", "*", pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Point size only BuildName(foundry, family, weight, "r", "*", "*", "*", pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Any res BuildName(foundry, family, weight, "r", "*", "*", "*", pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Pixel size only BuildName(foundry, family, weight, "r", "*", "*", pixelSize, "*", resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Any res BuildName(foundry, family, weight, "r", "*", "*", pixelSize, "*", "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Any foundry or family BuildName("*", "*", weight, "r", setWidth, addStyle, pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Any res BuildName("*", "*", weight, "r", setWidth, addStyle, pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Any width or add style BuildName("*", "*", weight, "r", "*", "*", pixelSize, pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Any res BuildName("*", "*", weight, "r", "*", "*", pixelSize, pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Point size only BuildName("*", "*", weight, "r", "*", "*", "*", pointSize, resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Any res BuildName("*", "*", weight, "r", "*", "*", "*", pointSize, "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Pixel size only BuildName("*", "*", weight, "r", "*", "*", pixelSize, "*", resStr, spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);// Any res BuildName("*", "*", weight, "r", "*", "*", pixelSize, "*", "*", spacing, "*", charset, iname); if ( FindBigger(iname) ) return CreateNonItalic(iname);//// If that didn't work, return this font//#if 0 StringC errmsg("I could not find a non-italic version of the font: "); errmsg += name; halApp->PopupMessage(errmsg);#else if ( debug1 ) cout <<"I could not find a non-italic version of the font: " <<name NL;#endif nonItalic = this; return nonItalic;} // End NonItalic/*---------------------------------------------------------------------- * Method to create the specified non-italic font */FontDataC*FontDataC::CreateNonItalic(char *iname){//// Create a new font structure// if ( debug1 ) cout <<"Found non-italic font: " <<iname <<endl; nonItalic = new FontDataC(iname); if ( !nonItalic->loaded ) { delete nonItalic; nonItalic = this; } freeNonItalic = True; return nonItalic;} // End CreateNonItalic/*---------------------------------------------------------------------- * Method to return a comparable font with the specified charset */FontDataC*FontDataC::Charset(StringC cSet){//// See if this is already in the desired charset// if ( !loaded || cSet.length() == 0 || charset.Equals(cSet, IGNORE_CASE) || cSet.Equals("us-ascii", IGNORE_CASE) ) return this;//// See if we've already loaded this character set// int index = charSetNames.indexOf(cSet); if ( index != charSetNames.NULL_INDEX ) { FontDataC *fd = (FontDataC*)*charSetFonts[index]; if ( !fd ) fd = this; return fd; } if ( debug1 ) cout <<"Looking for alternate character set: " <<cSet <<" for: " <<name NL;//// Change the character set and see if there is a match// StringC cname; BuildName(foundry, family, weight, slant, setWidth, addStyle, pixelSize, pointSize, resStr, spacing, avgWidth, cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any res BuildName(foundry, family, weight, slant, setWidth, addStyle, pixelSize, pointSize, "*", spacing, avgWidth, cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any width or style BuildName(foundry, family, weight, slant, "*", "*", pixelSize, pointSize, resStr, spacing, "*", cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any res BuildName(foundry, family, weight, slant, "*", "*", pixelSize, pointSize, "*", spacing, "*", cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any spacing BuildName(foundry, family, weight, slant, "*", "*", pixelSize, pointSize, resStr, "*", "*", cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any res BuildName(foundry, family, weight, slant, "*", "*", pixelSize, pointSize, "*", "*", "*", cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any foundry BuildName("*", family, weight, slant, "*", "*", pixelSize, pointSize, resStr, "*", "*", cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any res BuildName("*", family, weight, slant, "*", "*", pixelSize, pointSize, "*", "*", "*", cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any family BuildName("*", "*", weight, slant, "*", "*", pixelSize, pointSize, resStr, "*", "*", cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any res BuildName("*", "*", weight, slant, "*", "*", pixelSize, pointSize, "*", "*", "*", cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any bigger BuildName("*", "*", weight, slant, "*", "*", pixelSize, pointSize, resStr, "*", "*", cSet, cname); if ( FindBigger(cname) ) return CreateCharset(cname, cSet);// Any res BuildName("*", "*", weight, slant, "*", "*", pixelSize, pointSize, "*", "*", "*", cSet, cname); if ( FindBigger(cname) ) return CreateCharset(cname, cSet);// Any weight BuildName("*", "*", "*", slant, "*", "*", "*", "*", resStr, "*", "*", cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any res BuildName("*", "*", "*", slant, "*", "*", "*", "*", "*", "*", "*", cSet, cname); if ( FindFont(cname) ) return CreateCharset(cname, cSet);// Any slant BuildName("*", "*", weight,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -