试图在Eclipse 3.7中将字体大小设置为低于8我偶然发现了一行
.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.ui.workbench.prefs
org.eclipse.jface.textfont=1|Envy Code R|7.75|0|WINDOWS|1|-11|0|0|0|400|0|0|0|0|3|2|1|49|Envy Code R;
有人知道各个部分(除以|
)是什么意思?
该值是toString()
的FontData
方法返回的字符串。此值是特定于平台的,您必须检查平台的FontData
源代码,以确切地确定它的含义。
org.eclipse.jface.preference.PreferenceConverter
类提供了将FontData
转换为此字符串的各种方法。
感谢Greg输入,这就是字符串的形成方式。第一部分似乎是平台独立的。
1 |Envy Code R|7.75 |0
version|name |height|style
其余的是平台依赖的。
WINDOWS |1 |-11 |0 |0 |0 |400 |0 |0 |0 |0 |3 |2 |1 |49
platform|version2|lfHeight|lfWidth|lfEscapement|lfOrientation|lfWeight|lfItalic|lfUnderline|lfStrikeOut|lfCharSet|lfOutPrecision|lfClipPrecision|lfQuality|lfPitchAndFamily
在Windows中由Class表示
public abstract class LOGFONT {
public int lfHeight;
public int lfWidth;
public int lfEscapement;
public int lfOrientation;
public int lfWeight;
public byte lfItalic;
public byte lfUnderline;
public byte lfStrikeOut;
public byte lfCharSet;
public byte lfOutPrecision;
public byte lfClipPrecision;
public byte lfQuality;
public byte lfPitchAndFamily;
public static final int sizeof = OS.IsUnicode ? OS.LOGFONTW_sizeof () : OS.LOGFONTA_sizeof ();
}
这显然是C结构的“副本”:
typedef struct tagLOGFONT {
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT, *PLOGFONT;