⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fontinfo.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		    *pBuf = (_CHAR)0x84;		}		else if (0xB4 == uCh)		{		    *pBuf = (_CHAR)0x93;		}		else		{		    // /Convert chars that are not in iso-8859-7 to nbsp char:		    *pBuf = (_CHAR)0xA0;		}	    }	    else if ((UINT8)(*pBuf) >= FIRST_UPPER_128_CHAR_INDEX)	    {		// /Convert 0x80-0x9F chars that are not in iso-8859-5 to nbsp:		*pBuf = (_CHAR)0xA0;	    }	    pBuf++;	};	// /Caller should now be sure to handle the change in actual charset!    }#endif  /* end of #else (not Mac) */cleanup:    return TRUE;}/////////////////////////////////////////////////////////////////////////////////  This function returns the "width" in pixels of the character ch, given//  the font face, font charset, font point size, and whether or not the//  character is bold &/or italicized:////  WARNING: the value returned may be an error (which is a negative number)//  so you must check the return val before using it!//INT16 GetCharacterWidth(UINT16 ch, ULONG32 ulFontFaceIndex,	ULONG32 ulFontPtSize, BOOL isBold, BOOL isItalicized,	ULONG32 ulFontCharsetIndex){    if(ulFontCharsetIndex & HX_SBCS_CHARSET)    {	//CAUTION!: This HAS to be a double due to differences in the way	// float calculations are done in release Vs. debug builds with the	// Visual C++ compiler (at least version 5.0):	double fontDerivativeScaleFactor = 1.0;	if(ch<SBCS_FIRST_NON_CONTROL_CHAR)	{	    return 0;	}	if(ch>=SBCS_NUM_CHARS)	{	    switch(ulFontPtSize)	    {		case 8:		    return UNKNOWN_TIMES_8PT_CHAR_WIDTH;		case 10:		    return UNKNOWN_TIMES_10PT_CHAR_WIDTH;		case 12:		    return UNKNOWN_TIMES_12PT_CHAR_WIDTH;		case 14:		    return UNKNOWN_TIMES_14PT_CHAR_WIDTH;		case 16:		    return UNKNOWN_TIMES_16PT_CHAR_WIDTH;		case 20:		    return UNKNOWN_TIMES_20PT_CHAR_WIDTH;		case 24:		    return UNKNOWN_TIMES_24PT_CHAR_WIDTH;		case 36:		    return UNKNOWN_TIMES_36PT_CHAR_WIDTH;		case 48:		    return UNKNOWN_TIMES_48PT_CHAR_WIDTH;	    }	    return UNKNOWN_TIMES_16PT_CHAR_WIDTH;	}	switch(ulFontFaceIndex)	{	    case TIMES_FONT_FACE_INDX:		fontDerivativeScaleFactor = 1.0;	    case BRUSH_SCRIPT_FONT_FACE_INDX:		if(BRUSH_SCRIPT_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  0.8319327731092;	    case COLONNA_MT_FONT_FACE_INDX:		if(COLONNA_MT_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  1.1134;	    case COMIC_SANS_MS_FONT_FACE_INDX:		if(COMIC_SANS_MS_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  1.0; ///XXXEH- need # here!!	    case GARAMOND_FONT_FACE_INDX:		if(GARAMOND_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  1.0462;	    case KINO_MT_FONT_FACE_INDX:		if(KINO_MT_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  0.8697;	    case MATURA_MT_SCRIPT_CAPITALS_FONT_FACE_INDX:		if(MATURA_MT_SCRIPT_CAPITALS_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  1.1849;	    case MS_DIALOG_FONT_FACE_INDX:		if(MS_DIALOG_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = 1.0; //XXXEH- need # here!!	    case MS_DIALOG_LIGHT_FONT_FACE_INDX:		if(MS_DIALOG_LIGHT_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = 1.0; //XXXEH- need # here!!	    case MS_SYSTEMEX_FONT_FACE_INDX:		if(MS_SYSTEMEX_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  1.0; //XXXEH- need # here!!	    case PLAYBILL_FONT_FACE_INDX:		if(PLAYBILL_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  0.6513;	    case SMALL_FONTS_FONT_FACE_INDX:		if(SMALL_FONTS_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  1.1471;	    {do{ //XXXEH- this is here so break will go do default code.		if(16 == ulFontPtSize)		{		    if(isBold)		    {			if(isItalicized)			{			    return INT16(float(fontDerivativeScaleFactor *				    double((INT32)				    timesFontWidths16PointBoldItalics[				    ch - SBCS_FIRST_NON_CONTROL_CHAR])));			}			else			{			    return INT16(float(fontDerivativeScaleFactor *				    double((INT32)				    timesFontWidths16PointBold[				    ch - SBCS_FIRST_NON_CONTROL_CHAR])));			}		    }		    else if(isItalicized)		    {			return INT16(float(fontDerivativeScaleFactor *				double((INT32)				timesFontWidths16PointItalics[				ch - SBCS_FIRST_NON_CONTROL_CHAR])));		    }		    else		    {			return INT16(float(fontDerivativeScaleFactor *				double((INT32)				timesFontWidths16PointRegular[				ch - SBCS_FIRST_NON_CONTROL_CHAR])));		    }		}		else if(20 == ulFontPtSize)		{		    if(isBold)		    {			if(isItalicized)			{			    break; //XXXEH- replace with table look-up.			}			else			{			    return INT16(float(fontDerivativeScaleFactor *				    double((INT32)				    timesFontWidths20PointBold[				    ch - SBCS_FIRST_NON_CONTROL_CHAR])));			}		    }		    else if(isItalicized)		    {			break; //XXXEH- replace with table look-up.		    }		    else		    {			return INT16(float(fontDerivativeScaleFactor *				double((INT32)				timesFontWidths20PointRegular[				ch - SBCS_FIRST_NON_CONTROL_CHAR])));		    }		}		else if(24 == ulFontPtSize)		{		    if(isBold)		    {			if(isItalicized)			{			    break; //XXXEH- replace with table look-up.			}			else			{			    return INT16(float(fontDerivativeScaleFactor *				    double((INT32)				    timesFontWidths24PointBold[				    ch - SBCS_FIRST_NON_CONTROL_CHAR])));			}		    }		    else if(isItalicized)		    {			break; //XXXEH- replace with table look-up.		    }		    else		    {			return INT16(float(fontDerivativeScaleFactor *				double((INT32)				timesFontWidths24PointRegular[				ch - SBCS_FIRST_NON_CONTROL_CHAR])));		    }		}}while(0);				float foo = 			float(fontDerivativeScaleFactor *			double(float(ulFontPtSize *			UINT32((UINT16)timesFontWidths100PointRegular[			ch - SBCS_FIRST_NON_CONTROL_CHAR]))) / double(100.0));		if(foo > INT16(foo))		{		    foo++;		}		return (INT16(foo));	    }	    case COURIERTT_FONT_FACE_INDX:		fontDerivativeScaleFactor = 1.0;	    case FIXEDSYS_FONT_FACE_INDX:		if(FIXEDSYS_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = .8062;	    case ALGERIAN_FONT_FACE_INDX:		if(ALGERIAN_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =    0.9213;	    {		switch(ulFontPtSize)		{		    case FONT_SIZE_MINUS2:		    {			return INT16(float(fontDerivativeScaleFactor *				double(.875 * (ulFontPtSize/2))));		    }		    case FONT_SIZE_MINUS1:		    {			break;		    }		    case FONT_SIZE_0:		    {			if(isBold  ||  isItalicized)			{			    return INT16(float(fontDerivativeScaleFactor *				    double(.875 * (ulFontPtSize/2))));			}			break;		    }		    case FONT_SIZE_PLUS1:		    {			break;		    }		    case FONT_SIZE_PLUS2:		    {			return INT16(float(fontDerivativeScaleFactor *				    double(1.125 * (ulFontPtSize/2))));		    }		    case FONT_SIZE_PLUS3:		    {			if(isItalicized  &&  !isBold)			{			    return INT16(float(fontDerivativeScaleFactor *				    double(1.125 * (ulFontPtSize/2))));			}			return INT16(float(fontDerivativeScaleFactor *				    double(1.1 * (ulFontPtSize/2))));		    }		    case FONT_SIZE_PLUS4:		    {			if(isBold  ||  isItalicized)			{			    return INT16(float(fontDerivativeScaleFactor *				    double(1.05 * (ulFontPtSize/2))));			}			return INT16(float(fontDerivativeScaleFactor *				    double(1.125 * (ulFontPtSize/2))));		    }		}		return INT16(float(fontDerivativeScaleFactor *			double(ulFontPtSize/2)));	    }	    case SYSTEM_FONT_FACE_INDX:		fontDerivativeScaleFactor =  1.0;	    case TERMINAL_FONT_FACE_INDX:		if(TERMINAL_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  1.0717;	    {		if(16 == ulFontPtSize)		{		    return INT16(float(fontDerivativeScaleFactor *			    double((INT32)systemFontWidths16PointAll[			    ch - SBCS_FIRST_NON_CONTROL_CHAR])));		}		else if(36 == ulFontPtSize)		{		    return INT16(float(fontDerivativeScaleFactor *			    double((INT32)systemFontWidths36PointAll[			    ch - SBCS_FIRST_NON_CONTROL_CHAR])));		}		else if(48 == ulFontPtSize)		{		    return INT16(float(fontDerivativeScaleFactor *			    double((INT32)systemFontWidths48PointAll[			    ch - SBCS_FIRST_NON_CONTROL_CHAR])));		}		//XXXEH- need lookup table!		float foo;		if(ulFontPtSize == 48  &&  1.0 == fontDerivativeScaleFactor)		{		    foo = float(UINT32((UINT16)systemFontWidths48PointAll[			ch - SBCS_FIRST_NON_CONTROL_CHAR]));		}		else		{		    foo = 			float(fontDerivativeScaleFactor *			double(float(ulFontPtSize *			UINT32((UINT16)systemFontWidths48PointAll[			ch - SBCS_FIRST_NON_CONTROL_CHAR]))) / double(48.0));		}		if(foo > INT16(foo))		{		    foo++;		}		return (INT16(foo));	    }	    case ARIAL_FONT_FACE_INDX:		fontDerivativeScaleFactor = 1.0;	    case ARIAL_BLACK_FONT_FACE_INDX:		if(ARIAL_BLACK_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  1.3;	    case ARIAL_NARROW_FONT_FACE_INDX:		if(ARIAL_NARROW_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  0.855;	    case ARIAL_ROUNDED_MT_BOLD_FONT_FACE_INDX:		if(ARIAL_ROUNDED_MT_BOLD_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  1.1561;	    case BOOK_ANTIQUA_FONT_FACE_INDX:		if(BOOK_ANTIQUA_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =   1.0297;	    case BOOKMAN_OLD_STYLE_FONT_FACE_INDX:		if(BOOKMAN_OLD_STYLE_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =   1.1412;	    case BRAGGADOCIO_FONT_FACE_INDX:		if(BRAGGADOCIO_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =   1.5204;	    case BRITANNIC_BOLD_FONT_FACE_INDX:		if(BRITANNIC_BOLD_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =   1.0335;	    case CENTURY_GOTHIC_FONT_FACE_INDX:		if(CENTURY_GOTHIC_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =   1.1487;	    case CENTURY_SCHOOLBOOK_FONT_FACE_INDX:		if(CENTURY_SCHOOLBOOK_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =   1.0595;	    case DESDEMONA_FONT_FACE_INDX:		if(DESDEMONA_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  1.0;	    case FOOTLIGHT_MT_LIGHT_FONT_FACE_INDX:		if(FOOTLIGHT_MT_LIGHT_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor =  1.0;	    case HAETTENSCHWEILER_FONT_FACE_INDX:		if(HAETTENSCHWEILER_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = .8; //0.7323;	    case HELVETICA_FONT_FACE_INDX:		if(HELVETICA_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = 1.0;	    case IMPACT_FONT_FACE_INDX:		if(IMPACT_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = 0.9294;	    case MODERN_FONT_FACE_INDX:		if(MODERN_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = 1.0;	    case MS_LINEDRAW_FONT_FACE_INDX:		if(MS_LINEDRAW_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = 1.0;	    case MS_SANS_SERIF_FONT_FACE_INDX:		if(MS_SANS_SERIF_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = 1.0297;	    case MS_SERIF_FONT_FACE_INDX:		if(MS_SERIF_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = 0.9331;	    case VERDANA_FONT_FACE_INDX:		if(VERDANA_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = 1.1933;	    case WIDE_LATIN_FONT_FACE_INDX:		if(WIDE_LATIN_FONT_FACE_INDX == ulFontFaceIndex)		    fontDerivativeScaleFactor = 1.9368;	    {do{ //XXXEH- this is here so break will go do default code.		if(16 == ulFontPtSize)		{		    if(isBold)		    {			if(isItalicized)			{			    return INT16(float(fontDerivativeScaleFactor *				    double((INT32)				    (INT32)arialFontWidths16PointBoldItalics[				    ch - SBCS_FIRST_NON_CONTROL_CHAR])));			}			else			{			    return INT16(float(fontDerivativeScaleFactor *				    double((INT32)				    (INT32)arialFontWidths16PointBold[				    ch - SBCS_FIRST_NON_CONTROL_CHAR])));			}		    }		    else if(isItalicized)		    {			return INT16(float(fontDerivativeScaleFactor *				double((INT32)				arialFontWidths16PointItalics[				ch - SBCS_FIRST_NON_CONTROL_CHAR])));		    }		    else		    {			return INT16(float(fontDerivativeScaleFactor *				double((INT32)				arialFontWidths16PointRegular[				ch - SBCS_FIRST_NON_CONTROL_CHAR])));		    }		}		else if(20 == ulFontPtSize)		{		    if(isBold)		    {			if(isItalicized)			{			    break; //XXXEH- replace with table look-up.			}			else			{			    return INT16(float(fontDerivativeScaleFactor *				    double((INT32)				    arialFontWidths20PointBold[				    ch - SBCS_FIRST_NON_CONTROL_CHAR])));			}		    }		    else if(isItalicized)		    {			break; //XXXEH- replace with table look-up.		    }		    else		    {			return INT16(float(fontDerivativeScaleFactor *				double((INT32)				arialFontWidths20PointRegular[				ch - SBCS_FIRST_NON_CONTROL_CHAR])));		    }		}		else if(24 == ulFontPtSize)		{		    if(isBold)		    {			if(isItalicized)			{			    break; //XXXEH- replace with table look-up.			}			else			{			    return INT16(float(fontDerivativeScaleFactor *				    double((INT32)				    arialFontWidths24PointBold[

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -