zoukankan      html  css  js  c++  java
  • Ubuntu下中文完美解决方案

    目标:英文环境下,实现中文的输入和完美显示,解决了粗体和斜体

    创新点:解决了英文的锯齿问题

    不足之处:某些数字还有锯齿现象

    主要参考文章:
    修改ttf字体美化显示效果 by cnhnln@linuxfans
    fontconfig .org
    http://fractal.csie.org/~eric/fontconfig/

    首先下载cnhnln制作修改的VeraSansYuanTi (8个都要下):
    http://www.linuxfans.org/nuke/modules.php?name=Site_Downloads&op=geninfo&did=2488

    解压,得到8个ttf文件,复制到/usr/share/fonts目录

    接着 $sudo gedit /etc/fonts/fonts.conf

    代码:
       <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <!-- /etc/fonts/fonts.conf file to configure system font access -->
    <fontconfig>

    <!--
       DO NOT EDIT THIS FILE.
       IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED.
       LOCAL CHANGES BELONG IN 'local.conf'.

       The intent of this standard configuration file is to be adequate for
       most environments.  If you have a reasonably normal environment and
       have found problems with this configuration, they are probably
       things that others will also want fixed.  Please submit any
       problems to the fontconfig bugzilla system located at fontconfig.org

       Note that the normal 'make install' procedure for fontconfig is to
       replace any existing fonts.conf file with the new version.  Place
       any local customizations in local.conf which this file references.

       Keith Packard
    -->

       <dir>/usr/share/fonts</dir>
       <dir>/usr/X11R6/lib/X11/fonts/Type1</dir> <dir>/usr/local/share/fonts</dir>
       <dir>~/.fonts</dir>

    <!--
      Accept deprecated 'mono' alias, replacing it with 'monospace'
    -->
       <match target="pattern">
          <test qual="any" name="family">
             <string>mono</string>
          </test>
          <edit name="family" mode="assign">
             <string>monospace</string>
          </edit>
       </match>

    <!--
      Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'
    -->
       <match target="pattern">
          <test qual="any" name="family">
             <string>sans serif</string>
          </test>
          <edit name="family" mode="assign">
             <string>sans-serif</string>
          </edit>
       </match>

    <!--
      Accept deprecated 'sans' alias, replacing it with 'sans-serif'
    -->
       <match target="pattern">
          <test qual="any" name="family">
             <string>sans</string>
          </test>
          <edit name="family" mode="assign">
             <string>sans-serif</string>
          </edit>
       </match>

    <!--
      Mark common families with their generics so we'll get
      something reasonable
    -->

    <!--
      Serif faces
     -->
       <alias>
          <family>Bitstream Vera Serif</family>
          <family>Vera Sans YuanTi</family>                        <!--  added by lifesinger-->
          <family>Times</family>
          <family>Times New Roman</family>
          <family>Nimbus Roman No9 L</family>
          <family>Luxi Serif</family>
          <family>Kochi Mincho</family>
          <family>AR PL SungtiL GB</family>
          <family>AR PL Mingti2L Big5</family>
          <family>Baekmuk Batang</family>
          <family>FreeSerif</family>
          <default><family>serif</family></default>
       </alias>
    <!--
      Sans-serif faces
     -->
       <alias>
          <family>Bitstream Vera Sans</family>
          <family>Vera Sans YuanTi</family>                        <!--  added by lifesinger-->
          <family>Helvetica</family>
          <family>Arial</family>
          <family>Verdana</family>
          <family>Nimbus Sans L</family>
          <family>Luxi Sans</family>
          <family>Kochi Gothic</family>
          <family>AR PL KaitiM GB</family>
          <family>AR PL KaitiM Big5</family>
          <family>Baekmuk Dotum</family>
          <family>SimSun</family>
          <family>FreeSans</family>
          <default><family>sans-serif</family></default>
       </alias>
    <!--
      Monospace faces
     -->
        <alias>
          <family>Bitstream Vera Sans Mono</family>
          <family>Vera Sans YuanTi Mono</family>                        <!--  added by lifesinger-->
          <family>Courier</family>
          <family>Courier New</family>
          <family>Andale Mono</family>
          <family>Luxi Mono</family>
          <family>Nimbus Mono L</family>
          <family>SimSun</family>
          <family>FreeMono</family>
          <default><family>monospace</family></default>
       </alias>
    <!--
      If the font still has no generic name, add sans-serif
     -->
       <match target="pattern">
          <test qual="all" name="family" compare="not_eq">
             <string>sans-serif</string>
          </test>
          <test qual="all" name="family" compare="not_eq">
             <string>serif</string>
          </test>
          <test qual="all" name="family" compare="not_eq">
             <string>monospace</string>
          </test>
          <edit name="family" mode="append_last">
             <string>sans-serif</string>
          </edit>
       </match>      
       
    <!--
      Some Asian fonts misadvertise themselves as monospaced when
      in fact they are dual-spaced (half and full).  This makes
      FreeType very confused as it forces all widths to match.
      Undo this magic by disabling the width forcing code -->
       <match target="font">
          <test name="family"><string>GulimChe</string></test>
          <edit name="globaladvance"><bool>false</bool></edit>
       </match>
       
       <match target="font">
          <test name="family"><string>DotumChe</string></test>
          <edit name="globaladvance"><bool>false</bool></edit>
       </match>

       <match target="font">
          <test name="family"><string>BatangChe</string></test>
          <edit name="globaladvance"><bool>false</bool></edit>
       </match>

       <match target="font">
          <test name="family"><string>GungsuhChe</string></test>
          <edit name="globaladvance"><bool>false</bool></edit>
       </match>

    <!--
       The Bitstream Vera fonts have GASP entries suggesting that hinting be
       disabled below 8 ppem, but FreeType ignores those, preferring to use
       the data found in the instructed hints.  The initial Vera release
       didn't include the right instructions in the 'prep' table. Fix this
       by disabling hinting manually at smaller sizes (< 8ppem)
     -->
       
       <match target="font">
          <test name="family">
             <string>Bitstream Vera Sans</string>
          </test>
          <test name="pixelsize" compare="less">
             <double>7.5</double>
          </test>
          <edit name="hinting">
             <bool>false</bool>
          </edit>     
       </match>
       
       <match target="font">
          <test name="family">
             <string>Bitstream Vera Serif</string>
          </test>
          <test name="pixelsize" compare="less">
             <double>7.5</double>
          </test>
          <edit name="hinting">
             <bool>false</bool>
          </edit>
       </match>
       
       <match target="font">
          <test name="family">
             <string>Bitstream Vera Sans Mono</string>
          </test>
          <test name="pixelsize" compare="less">
             <double>7.5</double>
          </test>
          <edit name="hinting">
             <bool>false</bool>
          </edit>
       </match>
       
    <!--
      Load local system customization file

       <include ignore_missing="yes">local.conf</include>
    -->

    <!--
      Load per-user customization file

       <include ignore_missing="yes">~/.fonts.conf</include>
    -->

    <!--
      Alias well known font names to available TrueType fonts
    -->
       <alias>
          <family>Times</family>
          <accept><family>Times New Roman</family></accept>
       </alias>
       <alias>
          <family>Helvetica</family>
          <accept><family>Verdana</family></accept>
       </alias>
       <alias>
          <family>Arial</family>
          <accept><family>Verdana</family></accept>
       </alias>
       <alias>
          <family>Courier</family>
          <accept><family>Courier New</family></accept>
       </alias>

    <!--
     Check user preference to avoid bitmap fonts and replace
     bitmap face names with equivalent scalable fonts
     -->

       <match target="pattern">
               <test name="prefer_outline">
                       <bool>true</bool>
               </test>
               <test name="family">
                       <string>Helvetica</string>
               </test>
               <edit name="family" mode="prepend" binding="same">
                       <string>Arial</string>
               </edit>
       </match>

       <match target="pattern">
               <test name="prefer_outline">
                       <bool>true</bool>
               </test>
               <test name="family">
                       <string>Times</string>
               </test>
               <edit name="family" mode="prepend" binding="same">
                       <string>Times New Roman</string>
               </edit>
       </match>
    <!--
      Provide required aliases for standard names
    -->
       <alias>
          <family>serif</family>
          <prefer>
             <family>Bitstream Vera Serif</family>
             <family>Vera Sans YuanTi</family>                        <!--  added by lifesinger-->
             <family>Times New Roman</family>
             <family>Nimbus Roman No9 L</family>
             <family>Luxi Serif</family>
             <family>Times</family>
             <family>Frank Ruehl</family>
             <family>Kochi Mincho</family>
             <family>AR PL SungtiL GB</family>
             <family>AR PL Mingti2L Big5</family>
             <family>Baekmuk Batang</family>
             <family>FreeSerif</family>
          </prefer>
       </alias>
       <alias>
          <family>sans-serif</family>
          <prefer>
             <family>Bitstream Vera Sans</family>
             <family>Vera Sans YuanTi</family>                        <!--  added by lifesinger-->
             <family>Verdana</family>
             <family>Nimbus Sans L</family>
             <family>Luxi Sans</family>
             <family>Arial</family>
             <family>Helvetica</family>
             <family>Nachlieli</family>
             <family>Kochi Gothic</family>
             <family>AR PL KaitiM GB</family>
             <family>AR PL KaitiM Big5</family>
             <family>Baekmuk Dotum</family>
             <family>SimSun</family>
             <family>FreeSans</family>
          </prefer>
       </alias>
       <alias>
          <family>monospace</family>
          <prefer>
             <family>Bitstream Vera Sans Mono</family>
             <family>Vera Sans YuanTi Mono</family>                        <!--  added by lifesinger-->
             <family>Andale Mono</family>
             <family>Courier New</family>
             <family>Luxi Mono</family>
             <family>Nimbus Mono L</family>
             <family>Miriam Mono</family>
             <family>Kochi Gothic</family>
             <family>AR PL KaitiM GB</family>
             <family>Baekmuk Dotum</family>
             <family>FreeMono</family>
          </prefer>
       </alias>

    <!--
     Artificial oblique for fonts without an italic or oblique version
     -->
     
       <match target="font">
          <!-- check to see if the font is roman -->
          <test name="slant">
             <const>roman</const>
          </test>
          <!-- check to see if the pattern requested non-roman -->
          <test target="pattern" name="slant" compare="not_eq">
             <const>roman</const>
          </test>
          <!-- multiply the matrix to slant the font -->
          <edit name="matrix" mode="assign">
             <times>
                <name>matrix</name>
                <matrix><double>1</double><double>0.2</double>
                   <double>0</double><double>1</double>
                </matrix>
             </times>
          </edit>
          <!-- pretend the font is oblique now -->
          <edit name="slant" mode="assign">
             <const>oblique</const>
          </edit>
       </match>

       <config>
    <!--
      These are the default Unicode chars that are expected to be blank
      in fonts.  All other blank chars are assumed to be broken and
      won't appear in the resulting charsets
     -->
          <blank>
             <int>0x0020</int>   <!-- SPACE -->
             <int>0x00a0</int>   <!-- NO-BREAK SPACE -->
             <int>0x00ad</int>   <!-- SOFT HYPHEN -->
             <int>0x115f</int>   <!-- HANGUL CHOSEONG FILLER -->
             <int>0x1160</int>   <!-- HANGUL JUNGSEONG FILLER -->
             <int>0x1680</int>   <!-- OGHAM SPACE MARK -->
             <int>0x2000</int>   <!-- EN QUAD -->
             <int>0x2001</int>   <!-- EM QUAD -->
             <int>0x2002</int>   <!-- EN SPACE -->
             <int>0x2003</int>   <!-- EM SPACE -->
             <int>0x2004</int>   <!-- THREE-PER-EM SPACE -->
             <int>0x2005</int>   <!-- FOUR-PER-EM SPACE -->
             <int>0x2006</int>   <!-- SIX-PER-EM SPACE -->
             <int>0x2007</int>   <!-- FIGURE SPACE -->
             <int>0x2008</int>   <!-- PUNCTUATION SPACE -->
             <int>0x2009</int>   <!-- THIN SPACE -->
             <int>0x200a</int>   <!-- HAIR SPACE -->
             <int>0x200b</int>   <!-- ZERO WIDTH SPACE -->
             <int>0x200c</int>   <!-- ZERO WIDTH NON-JOINER -->
             <int>0x200d</int>   <!-- ZERO WIDTH JOINER -->
             <int>0x200e</int>   <!-- LEFT-TO-RIGHT MARK -->
             <int>0x200f</int>   <!-- RIGHT-TO-LEFT MARK -->
             <int>0x2028</int>   <!-- LINE SEPARATOR -->
             <int>0x2029</int>   <!-- PARAGRAPH SEPARATOR -->
             <int>0x202a</int>   <!-- LEFT-TO-RIGHT EMBEDDING -->
             <int>0x202b</int>   <!-- RIGHT-TO-LEFT EMBEDDING -->
             <int>0x202c</int>   <!-- POP DIRECTIONAL FORMATTING -->
             <int>0x202d</int>   <!-- LEFT-TO-RIGHT OVERRIDE -->
             <int>0x202e</int>   <!-- RIGHT-TO-LEFT OVERRIDE -->
             <int>0x202f</int>   <!-- NARROW NO-BREAK SPACE -->
             <int>0x205f</int>   <!-- MEDIUM MATHEMATICAL SPACE -->
             <int>0x2060</int>   <!-- WORD JOINER -->
             <int>0x2061</int>   <!-- FUNCTION APPLICATION -->
             <int>0x2062</int>   <!-- INVISIBLE TIMES -->
             <int>0x2063</int>   <!-- INVISIBLE SEPARATOR -->
             <int>0x206A</int>   <!-- INHIBIT SYMMETRIC SWAPPING -->
             <int>0x206B</int>   <!-- ACTIVATE SYMMETRIC SWAPPING -->
             <int>0x206C</int>   <!-- INHIBIT ARABIC FORM SHAPING -->
             <int>0x206D</int>   <!-- ACTIVATE ARABIC FORM SHAPING -->
             <int>0x206E</int>   <!-- NATIONAL DIGIT SHAPES -->
             <int>0x206F</int>   <!-- NOMINAL DIGIT SHAPES -->
             <int>0x3000</int>   <!-- IDEOGRAPHIC SPACE -->
             <int>0x3164</int>   <!-- HANGUL FILLER -->
             <int>0xfeff</int>   <!-- ZERO WIDTH NO-BREAK SPACE -->
             <int>0xffa0</int>   <!-- HALFWIDTH HANGUL FILLER -->
             <int>0xfff9</int>   <!-- INTERLINEAR ANNOTATION ANCHOR -->
             <int>0xfffa</int>   <!-- INTERLINEAR ANNOTATION SEPARATOR -->
             <int>0xfffb</int>   <!-- INTERLINEAR ANNOTATION TERMINATOR -->
          </blank>
    <!--
      Rescan configuration every 30 seconds when FcFontSetList is called
     -->
          <rescan>
             <int>30</int>
          </rescan>
       </config>


    <!--  字体替代法 -->
       <!-- 代替SimSun的粗体
    <match target="pattern">
       <test  name="family"><string>SimSun</string></test>
       <test name="weight" compare="more_eq"><const>bold</const></test>
       <edit name="family" mode="assign"><string>VeraSansYuanTi-Bold</string></edit>
    </match>
    -->

    <!-- 关闭SimSun的AA
    <match target="font">
       <test qual="any" name="family"><string>SimSun</string> </test>
       <edit name="antialias" mode="assign"><bool>false</bool></edit>
    </match>
    -->

    <!-- 关闭SimSun粗体的AA
    <match target="font">
       <test qual="any" name="family"><string>VeraSansYuanTi-Bold</string> </test>
       <edit name="antialias" mode="assign"><bool>false</bool></edit>
    </match>
    -->


    <!-- 修改ttf字体法 -->

       <!-- Mac OS X 效果
    <match target="font">
       <test name="family"><string>Vera Sans YuanTi</string></test>
       <edit name="globaladvance"><bool>false</bool></edit>
    </match>

    <match target="font">
       <test name="family"><string>Vera Sans YuanTi Mono</string></test>
       <edit name="globaladvance"><bool>false</bool></edit>
    </match>

    <match target="font">
       <edit name="antialias" mode="assign"><bool>true</bool></edit>
       <edit name="hinting" mode="assign"><bool>false</bool></edit>
       <edit name="autohint" mode="assign"><bool>false</bool></edit>
       <edit name="hintstyle" mode="assign"><const>hintnone</const></edit>
       <edit name="rh_prefer_bitmaps" mode="assign"><bool>false</bool></edit>
    </match>
    -->

       <!-- Win XP 效果 -->
    <match target="font">
       <test name="family"><string>Vera Sans YuanTi</string></test>
       <edit name="globaladvance"><bool>false</bool></edit>
    </match>

    <match target="font">
       <test name="family"><string>Vera Sans YuanTi Mono</string></test>
       <edit name="globaladvance"><bool>false</bool></edit>
    </match>

    <match target="font">
       <test qual="any" name="family"><string>Vera Sans YuanTi</string></test>
       <edit name="antialias" mode="assign"><bool>true</bool></edit>
       <edit name="hinting" mode="assign"><bool>false</bool></edit>
       <edit name="autohint" mode="assign"><bool>false</bool></edit>
       <edit name="hintstyle" mode="assign"><const>hintnone</const></edit>
       <edit name="rh_prefer_bitmaps" mode="assign"><bool>false</bool></edit>
    </match>

    <match target="font">
       <test qual="any" name="family"><string>Vera Sans YuanTi</string></test>
       <test compare="more_eq" name="pixelsize" qual="any" ><double>12</double></test>
       <test compare="less_eq" name="pixelsize" qual="any" ><double>16</double></test>
       <edit name="antialias" mode="assign"><bool>false</bool></edit>
       <edit name="hinting" mode="assign"><bool>true</bool></edit>
       <edit name="autohint" mode="assign"><bool>false</bool></edit>
       <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
       <edit name="rh_prefer_bitmaps" mode="assign"><bool>true</bool></edit>
    </match>

    <match target="font">
       <test qual="any" name="family"><string>Vera Sans YuanTi Mono</string></test>
       <edit name="antialias" mode="assign"><bool>true</bool></edit>
       <edit name="hinting" mode="assign"><bool>false</bool></edit>
       <edit name="autohint" mode="assign"><bool>false</bool></edit>
       <edit name="hintstyle" mode="assign"><const>hintnone</const></edit>
       <edit name="rh_prefer_bitmaps" mode="assign"><bool>false</bool></edit>
    </match>

    <match target="font">
       <test qual="any" name="family"><string>Vera Sans YuanTi Mono</string></test>
       <test compare="more_eq" name="pixelsize" qual="any" ><double>12</double></test>
       <test compare="less_eq" name="pixelsize" qual="any" ><double>16</double></test>
       <edit name="antialias" mode="assign"><bool>false</bool></edit>
       <edit name="hinting" mode="assign"><bool>true</bool></edit>
       <edit name="autohint" mode="assign"><bool>false</bool></edit>
       <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
       <edit name="rh_prefer_bitmaps" mode="assign"><bool>true</bool></edit>
    </match>


    </fontconfig>
  • 相关阅读:
    基于百度翻译API开发属于自己的翻译工具
    .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比
    基于uploadify.js实现多文件上传和上传进度条的显示
    浅析Ajax跨域原理及JQuery中的实现分析
    认识SQLServer索引以及单列索引和多列索引的不同
    用VS添加引用dll也会出错?你遇到过吗?
    .NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy
    免费打造自己的个人网站,免费域名、免费空间、FTP、数据库什么的,一个不能少,没钱,也可以这么任性
    【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-6底层驱动之多路开关选择器
    【6集iCore3_ADP触摸屏驱动讲解视频】6-4 底层驱动之SDRAM读写(上)
  • 原文地址:https://www.cnblogs.com/jacker1979/p/4695176.html
Copyright © 2011-2022 走看看