¶ÔÓÚJava¿ª·¢Õß¶øÑÔ£¬ÔÚLinux»·¾³ÏÂÓÐЧ¹ÜÀíºÍÓÅ»¯×ÖÌ壬²»½öÄܹ»ÌáÉýÓ¦ÓóÌÐòµÄÊÓ¾õÎüÒýÁ¦£¬»¹ÄÜÈ·±£¿çƽ̨µÄÒ»ÖÂÐԺͼæÈÝÐÔ
±¾ÎĽ«ÉîÈë̽ÌÖJavaÓëLinuxϵÄ×ÖÌå¹ÜÀí»úÖÆ£¬´Ó»ù´¡ÅäÖõ½¸ß¼¶ÓÅ»¯²ßÂÔ£¬Îª¿ª·¢ÕßÌṩһÌ×È«Ãæ¶øÊµÓõÄÖ¸ÄÏ
Ò»¡¢JavaÖеÄ×ÖÌå´¦Àí»ù´¡ Java×÷ΪһÖֹ㷺ʹÓõıà³ÌÓïÑÔ£¬ÆäͼÐÎÓû§½çÃæ£¨GUI£©¿â£¨ÈçSwingºÍJavaFX£©ÌṩÁ˷ḻµÄAPIÀ´´¦Àí×ÖÌå
ÕâЩAPIÔÊÐí¿ª·¢ÕßÖ¸¶¨×ÖÌåÑùʽ¡¢´óС¡¢ÑÕÉ«µÈÊôÐÔ£¬´Ó¶øÔÚÓ¦ÓóÌÐòÖÐʵÏÖ¶àÑù»¯µÄÎı¾ÏÔʾЧ¹û
1.1 ×ÖÌå¼ÓÔØÓëÉèÖà ÔÚJavaÖУ¬`Font`ÀàÊÇËùÓÐ×ÖÌå²Ù×÷µÄºËÐÄ
ͨ¹ý`Font`ÀàµÄ¹¹Ô캯Êý£¬¿ÉÒÔÖ¸¶¨×ÖÌåµÄÃû³Æ¡¢Ñùʽ£¨ÈçÆÕͨ¡¢´ÖÌ塢бÌ壩ºÍ´óС
ÀýÈ磺 Font myFont = new Font(Serif, Font.BOLD, 16); È»¶ø£¬Ö±½ÓÔÚ´úÂëÖÐÓ²±àÂë×ÖÌåÃû³Æ¿ÉÄÜ»á´øÀ´¿çƽ̨¼æÈÝÐÔÎÊÌ⣬ÒòΪ²»Í¬µÄ²Ù×÷ϵͳ¿ÉÄܰüº¬²»Í¬µÄ×ÖÌ弯ºÏ
ΪÁ˽â¾öÕâ¸öÎÊÌ⣬JavaÌṩÁË`Font.getFontNames()`ºÍ`Font.getAvailableFontFamilyNames()`µÈ·½·¨£¬ÔÊÐí³ÌÐòÔËÐÐʱ²éѯ¿ÉÓõÄ×ÖÌåÃû³Æ£¬´Ó¶ø¶¯Ì¬Ñ¡Ôñ×ÖÌå
1.2 ×ÖÌåäÖȾÓëÐÔÄÜ ×ÖÌåäÖȾÖÊÁ¿Ö±½ÓÓ°ÏìÓû§½çÃæµÄÃÀ¹Û¶È
JavaÌṩÁ˶àÖÖ×ÖÌåäÖȾѡÏÈ翹¾â³Ý£¨Anti-Aliasing£©£¬¿ÉÒÔͨ¹ýÉèÖÃ`RenderingHints`À´ÓÅ»¯
¿¹¾â³ÝÄܹ»Æ½»¬×ÖÌå±ßÔµ£¬Ê¹ÆäÔڽϵͷֱæÂÊÆÁÄ»ÉÏ¿´ÆðÀ´¸ü¼ÓÇåÎú
Map Àí½âLinuxϵÄ×ÖÌåĿ¼½á¹¹¡¢ÅäÖÃÎļþ¼°¹¤¾ß£¬¶ÔÓÚJava¿ª·¢ÕßÔÚLinux»·¾³ÏÂÓÐЧ¹ÜÀí×ÖÌåÖÁ¹ØÖØÒª
2.1 ×ÖÌåĿ¼Óë°²×°
LinuxϵͳÖеÄ×ÖÌåͨ³£´æ·ÅÔÚ`/usr/share/fonts`£¨ÏµÍ³¼¶×ÖÌ壩ºÍ`~/.fonts`£¨Óû§¼¶×ÖÌ壩Ŀ¼Ï °²×°ÐÂ×ÖÌåͨ³£Éæ¼°½«×ÖÌåÎļþ£¨Èç`.ttf`»ò`.otf`¸ñʽ£©¸´ÖƵ½ÕâЩĿ¼֮һ£¬²¢ÔËÐÐ`fc-cache`ÃüÁî¸üÐÂ×ÖÌ建´æ
sudo cp myfont.ttf /usr/share/fonts/truetype/custom/
sudo fc-cache -fv
2.2 ×ÖÌåÅäÖÃÎļþÓ빤¾ß
LinuxʹÓÃFontconfig¿âÀ´¹ÜÀíºÍÅäÖÃ×ÖÌå FontconfigµÄÅäÖÃÎļþÖ÷ҪλÓÚ`/etc/fonts`ºÍ`~/.config/fontconfig`Ŀ¼Ï£¬ÆäÖÐ`fonts.conf`ÊÇ×îÖ÷ÒªµÄÅäÖÃÎļþ ͨ¹ý±à¼ÕâЩÎļþ£¬¿ÉÒÔµ÷Õû×ÖÌå²éÕÒ·¾¶¡¢ÓÅÏȼ¶¡¢äÖȾѡÏîµÈ
`fc-list`ÊÇÒ»¸öʵÓõÄÃüÁîÐй¤¾ß£¬ÓÃÓÚÁгöϵͳÖÐÒѰ²×°µÄ×ÖÌå¼°ÆäÊôÐÔ£¬·Ç³£ÊʺÏÔÚ¿ª·¢¹ý³ÌÖÐÓÃÓÚµ÷ÊÔºÍÈ·ÈÏ×ÖÌå¿ÉÓÃÐÔ
fc-list :family
Èý¡¢JavaÓëLinux×ÖÌå¹ÜÀíµÄÈÚºÏʵ¼ù
½«JavaµÄ×ÖÌå´¦ÀíÄÜÁ¦ÓëLinuxµÄ×ÖÌå¹ÜÀíϵͳÏà½áºÏ£¬¿ÉÒÔ¹¹½¨³ö¼ÈÃÀ¹ÛÓÖ¸ßЧµÄ¿çƽ̨ӦÓóÌÐò ÒÔÏÂÊÇһЩ×î¼Ñʵ¼ùºÍ¼¼ÇÉ£º
3.1 ¶¯Ì¬×ÖÌå¼ÓÔØÓëÅäÖÃ
ÀûÓÃJavaµÄ·´Éä»úÖÆºÍLinuxµÄFontconfigÅäÖ㬿ÉÒÔʵÏÖ¶¯Ì¬¼ÓÔØºÍÅäÖÃ×ÖÌå ÀýÈ磬¿ÉÒÔ±àдһ¸ö¹¤¾ßÀ࣬¸ù¾Ý»·¾³±äÁ¿»òÅäÖÃÎļþÖеÄÉèÖ㬶¯Ì¬µ÷ÕûÓ¦ÓóÌÐòʹÓõÄ×ÖÌå
public class FontUtil{
public static Font getDefaultFont() {
String fontName = System.getProperty(user.font, Serif);
int fontSize = Integer.parseInt(System.getProperty(user.fontsize, 1