亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? minigui 體系結構之三邏輯字體以及多字體和多字符集實現.htm

?? 是一個標準的體系結構
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
  54     int         last_rightSideBearing;
  55     int         last_advanceX;
  56     int         last_advanceY;
  57     unsigned long       last_bpp;
  58     char  *     last_bits;
  59
  60 } TYPE1INSTANCEINFO, *PTYPE1INSTANCEINFO;
  61
</PRE></TD></TR></TBODY></TABLE>
      <P>如前面所說,TYPE1INFO和TYPE1INSTANCEINFO數據結構來存儲設備字符的類信息和實例信息。初始華時,其實只是注冊一個模板,此時利用TYPE1INFO記住其在 
      T1lib中的Font ID,這里valid用來說明該設備字體是否初始化完畢。</P>
      <P>當用戶創建一邏輯字體時,如果用戶選擇的是Type1字體的某一種,就會調用 font_ops 的函數new_instance,該函數根據存在于 
      DevFont 的data的 TYPE1INFO 結構中的 
      id,以及用戶提供的相關參數,構造一個TYPE1INSTANCEINFO類型的變量,并放入新的設備字體的私有數據data中。從而每個字體實例可以有自己的各種屬性。如旋轉度。</P>
      <P>前面各個字段的意義可以根據名字推測出來,從csUnix2Pixel 
      開始則是為了實現的方便和高效而自己定義的一些變量,后面解釋函數實現時將會說明。last*系列函數主要起緩沖的作用。</P>
      <P>2) InitType1Fonts 和 TermType1Fonts 函數</P>
      <P>這兩個函數負責整個 Type 1 字體的初始化和終結。</P>
      <P>InitType1Fonts 的主要任務是:初始化T1lib,根據配置文件提供的信息,將各種字體注冊到T1lib,并為每一個字體生成一個 
      DevFont 結構,注冊到系統中去。該結構中包括的 font_ops,是上層對Type 1字體各種操作的窗口。</P>
      <P>其實主要的處理功能在 T1lib 中,每次程序向 T1lib 注冊一個字體,T1lib會返回一個 Font ID,以后利用該ID 
      向T1lib請求關于對應字體的某些服務。</P>
      <P>TermType1Fonts 則是注銷 Type1 字體,關閉T1lib。</P>
      <P>InitType1Fonts 注冊向系統注冊了用來處理 Abode Type1 
      字體的字體操作集,定義如下(src/font/type1.c):</P>
      <TABLE class=code-sample cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD><PRE> 780 static FONTOPS type1_font_ops = {
 781         get_char_width,
 782         get_str_width,
 783         get_ave_width,
 784         get_max_width,
 785         get_font_height,
 786         get_font_size,
 787         get_font_ascent,
 788         get_font_descent,
 789         char_bitmap_size,
 790         max_bitmap_size,
 791         get_char_bitmap,
 792         get_char_pixmap,
 793         start_str_output,
 794         get_char_bbox,
 795         get_char_advance,
 796         new_instance,
 797         delete_instance
 798};
</PRE></TD></TR></TBODY></TABLE>
      <P>先說明一些基本概念。</P>
      <UL>
        <LI>ascent:描述某個字符在基準線上有多少掃描線。這里以像素為單位(下同)。 
        <LI>descent:描述某個字符在基準線下有多少掃描線。當字符的底線在基準線之下時,用負值來表示,所以整個字符的高度就是 ascent - 
        descent。 
        <LI>leftSideBearing:某個字符從其原點到最左邊像素點的水平距離,也可以稱為該字符的left margin。 
        <LI>rightSideBearing:某個字符從其原點到最右邊像素點的水平距離,也可以稱為該字符的right margin。 
        <LI>advanceX:在某字符的圖象被放置后,當前原點需要前進的水平距離。它通常比字符圖像的寬度要大,因為兩個字符之間存在一定的空白。由于該值對齊至像素,所以一些要求精確的內部計算不能用它,會累積誤差。 

        <LI>advanceY:在某字符的圖象被放置后,當前原點需要前進的豎直距離。 </LI></UL>
      <P>這樣,get_char_width、get_str_width、get_ave_width、get_max_width、get_font_height、get_font_size、get_font_ascent、get_font_descent、char_bitmap_size、max_bitmap_size、get_char_advance 
      等函數的功能就很明顯了,它們其實就是取出字體的一些度量(Metrics)。其實,這些信息都是從T1lib內部取得,需要注意的是T1lib 內部使用 
      PS 單位,而MiniGUI使用的單位是pixel, 需要轉換。以下以 get_char_bitmap 和 get_char_pixmap 
      等函數為例說明。</P>
      <P>3) get_char_bitmap 和 get_char_pixmap</P>
      <P>這兩個函數是主要的光柵化函數。它們首先判斷一下需要光柵化的字符是否剛剛被光柵化過,如果是,直接返回緩沖里的值。</P>
      <P>前面講過,T1Lib 
      支持5灰度的低分辨率和17灰度的高分辨率的反走樣。這里的get_char_bitmap返回普通的光柵化位圖,而get_char_pixmap返回經過反走樣后的像素位圖。如果字體在初始化時調用</P>
      <TABLE class=code-sample cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD><PRE>T1_AASetLevel (T1_AA_LOW)
</PRE></TD></TR></TBODY></TABLE>
      <P>則這里使用5灰度像素,如果初始化時是調用:</P>
      <TABLE class=code-sample cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD><PRE>T1_AASetLevel (T1_AA_HIGH)
</PRE></TD></TR></TBODY></TABLE>
      <P>則這里使用17灰度像素。</P>
      <P>這里使用的反走樣其實很簡單,就是先將字體放大,然后再取樣縮小。低精度是放大四倍(2*2),高精度則是放大16倍(4*4),灰度值則有n+1種。</P>
      <P>當然,為了提高性能,每次光柵化的結果都要被放到緩沖里,下次如果要光柵化相同的字符,并且方式相同,則可以大大地提高效率。</P>
      <P>4) start_str_output</P>
      <P>開始字符串輸出時調用該函數。完成一些初始化工作。</P>
      <P>5) get_char_bbox</P>
      <P>給出當前原點值(*px,*py),調用該函數要求得到在字符被畫出后的原點值(新的*px,*py),以及當前字符的寬度和高度。</P>
      <P>6) new_instance 和 delete_instance</P>
      <P>當用戶創建一個新的邏輯字體時調用new_instance ,當用戶刪除一個邏輯字體時會調用delete_instance。</P>
      <P>new_instance 
      根據傳給它的一些參數(size,rotation,font_id等)初始化一個TYPE1INSTANCEINFO類型的變量,并將其與新的設備字體關聯,將該設備字體返回。以后上層就通過該設備字體得到字體實例相關的信息。</P>
      <P>delete_instance 則用來刪除相關的數據結構。</P><A id=5 name=5></A>
      <P><STRONG class=subhead>5 小結</STRONG></P>
      <P>面向對象技術在軟件設計當中占有非常重要的地位,但面向對象并不是 C++ 
      等語言的專利。實際上,在諸如操作系統等系統軟件當中,面向對象技術的使用是非常廣泛的。利用 C 
      語言實現面向對象技術,不僅結構清晰,而且在執行效率等方面也有 C++ 
      等語言無法相比的優勢。從本文描述的字體和字符集的實現當中我們可以看到,采用面向對象技術,將大大提高系統的靈活性和可擴展性。</P>
      <P>MiniGUI 
      作為一個面向實時嵌入式系統的圖形用戶界面支持系統,對其執行效率、可定制、可擴展等方面有非常高的要求。為了提高系統的靈活性和可擴展性,我們在一些關鍵模塊當中使用了面向對象的技術。實踐表明,面向對象的技術在 
      MiniGUI 中的運用是成功的。</P><A id=resources name=resources></A>
      <P><STRONG class=subhead>資源</STRONG></P>
      <UL>
        <LI><B>字符集及字體</B> </LI></UL>
      <UL>
        <LI><A 
        href="http://czyborra.com/charsets/iso8859.html">ISO8859字符集及BDF字體</A> 
        <LI><A 
        href="http://www.oreilly.com/people/authors/lunde/cjk_inf.html">CJK 
        字符集信息大全</A> 
        <LI><A 
        href="http://www.neuroinformatik.ruhr-uni-bochum.de/ini/PEOPLE/rmz/t1lib/t1lib.html">T1Lib 
        庫</A> </LI></UL>
      <UL class=noindent>
        <LI><B>MiniGUI 資源</B> </LI></UL>
      <UL>
        <LI><A href="http://www.minigui.org/">MiniGUI 主頁</A> 
        <LI><A href="ftp://ftp.minigui.org/pub/minigui">MiniGUI FTP 站點</A> 
      </LI></UL>
      <UL class=noindent>
        <LI><B>MiniGUI 郵件列表</B> </LI></UL>
      <UL>
        <LI>發信:<A 
        href="mailto:minigui-devel@egroups.com">minigui-devel@egroups.com</A> 
        <LI>訂閱:<A 
        href="mailto:minigui-devel-subscribe@egroups.com">minigui-devel-subscribe@egroups.com</A> 

        <LI>解除訂閱:<A 
        href="mailto:minigui-devel-unsubscribe@egroups.com">minigui-devel-unsubscribe@egroups.com</A> 
        </LI></UL><A id=author name=author></A>
      <P><STRONG class=subhead>關于作者</STRONG><BR>魏永明(<A 
      href="mailto:ymwei@minigui.org">ymwei@minigui.org</A>),男,27 
      歲,工學碩士,現任藍點軟件(深圳)有限公司北京研發中心技術主管。國內最有影響的自由軟件項目之一-- MiniGUI 
      的創始人以及主要開發人員。著有《Linux 實用教程》與《學用 Linux 與 Windows NT》,并主持翻譯了《Red Hat Linux 
      奧秘》、《Linux 編程寶典》 等大量優秀的 Linux 技術著作。是清華大學 AKA Linux 編程技術系列講座的主講人。</P><!-- End paper --><BR></TD>
    <TD vAlign=top width=8><IMG height=1 alt="" 
      src="MiniGUI 體系結構之三邏輯字體以及多字體和多字符集實現.files/c.gif" width=8></TD></TR>
  <TR vAlign=top height=8>
    <TD vAlign=top width=8></TD>
    <TD vAlign=top width=8></TD>
    <TD vAlign=top width=8></TD></TR>
  <TR vAlign=top height=8>
    <TD vAlign=top width=8><!-- gutter --></TD>
    <TD vAlign=top width=8><!-- comments #7: rate article form -->       
      <TABLE cellSpacing=0 cellPadding=0 width=150 border=0>
        <TBODY>
        <TR>
          <TD width="100%" bgColor=#cc6633 height=3><IMG height=3 alt="" 
            src="MiniGUI 體系結構之三邏輯字體以及多字體和多字符集實現.files/c.gif" width=150 
          border=0></TD></TR>
        <TR>
          <TD width="100%" bgColor=#333333 height=1><IMG height=1 alt="" 
            src="MiniGUI 體系結構之三邏輯字體以及多字體和多字符集實現.files/c.gif" width=150 
          border=0></TD></TR>
        <TR>
          <TD width="100%" bgColor=#000000 height=1><IMG height=1 alt="" 
            src="MiniGUI 體系結構之三邏輯字體以及多字體和多字符集實現.files/c.gif" width=150 
          border=0></TD></TR>
        <TR>
          <TD width="100%" bgColor=#ffffff height=5><IMG height=5 alt="" 
            src="MiniGUI 體系結構之三邏輯字體以及多字體和多字符集實現.files/c.gif" width=150 
          border=0></TD></TR>
        <TR vAlign=top>
          <TD>
            <FORM 
            action=/developerWorks/cn/cnratings.nsf/RateArticle?CreateDocument 
            method=post><!-- comments #7: paste title here --><INPUT type=hidden 
            value="MiniGUI 體系結構之三:邏輯字體以及多字體和多字符集實現" name=ArticleTitle> <!-- comments #7: paste zone here --><INPUT type=hidden value=Linux 
            name=Zone> <INPUT type=hidden value="simplified chinese" 
            name=region> <INPUT type=hidden 
            value=/developerWorks/cn/thankyou/feedback-linux.html 
            name=RedirectURL> <FONT face=helvetica,helv,arial 
            size=-1><B>您對這篇文章的看法如何?</B></FONT> 
            <P></P>
            <TABLE cellSpacing=0 cellPadding=0 width=570 border=0>
              <TBODY>
              <TR vAlign=top>
                <TD><INPUT type=radio value=5 name=Rating><FONT 
                  face="HELVETICA, HELV, ARIAL" size=-1>真棒!</FONT></TD>
                <TD><INPUT type=radio value=4 name=Rating><FONT 
                  face="HELVETICA, HELV, ARIAL" size=-1>好材料</FONT></TD>
                <TD><INPUT type=radio value=3 name=Rating><FONT 
                  face="HELVETICA, HELV, ARIAL" size=-1>一般;尚可</FONT></TD>
                <TD><INPUT type=radio value=2 name=Rating><FONT 
                  face="HELVETICA, HELV, ARIAL" size=-1>需提高</FONT></TD>
                <TD><INPUT type=radio value=1 name=Rating><FONT 
                  face="HELVETICA, HELV, ARIAL" 
            size=-1>太差!</FONT></TD></TR></TBODY></TABLE><BR><FONT 
            face=helvetica,helv,arial size=-1><B>建議?</B></FONT><BR><TEXTAREA name=Comments rows=3 wrap=virtual cols=52></TEXTAREA><BR><BR><INPUT type=submit value=提交反饋意見></FORM></TD></TR></TBODY></TABLE><!-- end rate article form --></TD>
    <TD vAlign=top width=8></TD></TR>
  <TR vAlign=top height=8>
    <TD vAlign=top width=8></TD>
    <TD vAlign=top width=8></TD>
    <TD vAlign=top 
width=8></TD></TR></TBODY></TABLE><!-- end content --></TD></TR></TABLE><!-- ---------------footer------------------- -->
<TABLE cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR>
    <TD align=right width="100%" colSpan=2 height=30>(c) Copyright IBM Corp. 
      2001, (c) Copyright IBM China 2001, All Right Reserved</TD></TR>
  <TR>
    <TD width=150>
      <TABLE cellSpacing=0 cellPadding=0 width=150 border=0>
        <TBODY>
        <TR bgColor=#000000>
          <TD align=middle width=49><A class=nav style="COLOR: #ffffff" 
            href="http://www.ibm.com/privacy/"><FONT face="Arial, sans-serif" 
            color=#ffffff size=-1>隱私</FONT></A></TD>
          <TD width=1 bgColor=#959595><IMG height=20 alt="" 
            src="MiniGUI 體系結構之三邏輯字體以及多字體和多字符集實現.files/c.gif" width=1 
border=0></TD>
          <TD align=middle width=49><A class=nav style="COLOR: #ffffff" 
            href="http://www.ibm.com/legal/"><FONT face="Arial, sans-serif" 
            color=#ffffff size=-1>法律</FONT></A></TD>
          <TD width=1 bgColor=#959595><IMG height=20 alt="" 
            src="MiniGUI 體系結構之三邏輯字體以及多字體和多字符集實現.files/c.gif" width=1 
border=0></TD>
          <TD align=middle width=49><A class=nav style="COLOR: #ffffff" 
            href="http://www.cn.ibm.com/Main.nsf/HTMLS/aboutibm&amp;contactus"><FONT 
            face="Arial, sans-serif" color=#ffffff size=-1>聯系</FONT></A></TD>
          <TD width=1 bgColor=#959595><IMG height=21 alt="" 
            src="MiniGUI 體系結構之三邏輯字體以及多字體和多字符集實現.files/c.gif" width=1 
        border=0></TD></TR></TBODY></TABLE></TD>
    <TD width="100%" bgColor=#000000><IMG height=1 alt="" 
      src="MiniGUI 體系結構之三邏輯字體以及多字體和多字符集實現.files/c.gif" width=1 
  border=0></TD></TR></TBODY></TABLE>
<SCRIPT language=JavaScript1.2 
src="MiniGUI 體系結構之三邏輯字體以及多字體和多字符集實現.files/stats.js" 
type=text/javascript></SCRIPT>
<NOSCRIPT><IMG height=1 alt="" 
src="D:\新建文件夾\MiniGUI 體系結構之三邏輯字體以及多字體和多字符集實現.files\c(2).gif" width=1 
border=0></NOSCRIPT> </BODY></HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波波电影院一区二区三区| 2021中文字幕一区亚洲| 亚洲国产成人自拍| 久久精品国产精品亚洲红杏| 欧美日韩不卡一区二区| 亚洲欧美另类久久久精品 | 波多野结衣91| 国产精品欧美久久久久无广告| 国内精品伊人久久久久av一坑| 欧美久久久影院| 国产精品美日韩| 成人av第一页| 精品福利在线导航| 国产一区二区三区免费看 | 一本色道a无线码一区v| 综合欧美一区二区三区| 成人精品免费网站| 国产精品高潮久久久久无| 99精品在线免费| 一区二区三区精品视频| 欧美影片第一页| 香港成人在线视频| 91精品国模一区二区三区| 日韩av二区在线播放| 日韩亚洲欧美一区二区三区| 欧美aⅴ一区二区三区视频| 精品少妇一区二区三区| 国产综合色视频| 国产精品久久久久久久岛一牛影视| 丁香一区二区三区| 国产精品人人做人人爽人人添| 99re66热这里只有精品3直播| 亚洲图片欧美视频| 欧美成人性福生活免费看| 九九九久久久精品| 中文字幕一区二区三区四区不卡| 色999日韩国产欧美一区二区| 午夜视频一区在线观看| 日韩三级视频在线看| 91同城在线观看| 日韩av午夜在线观看| 欧美精品一区二区三区蜜臀| 欧美在线看片a免费观看| 美国毛片一区二区三区| 中文一区二区在线观看| 日韩视频一区在线观看| 99久久婷婷国产综合精品| 日本伊人色综合网| 亚洲另类一区二区| 欧美成人女星排名| 色综合夜色一区| 久久福利视频一区二区| 国产日韩视频一区二区三区| 欧美中文字幕亚洲一区二区va在线| 美女网站在线免费欧美精品| 中文字幕在线一区| 精品伦理精品一区| 91黄色激情网站| 国产在线观看一区二区| 亚洲电影在线播放| 中文字幕第一区综合| 欧美一区二区黄| 在线视频你懂得一区| 岛国精品一区二区| 国产一区二区在线视频| 中文字幕一区二区三区不卡| 26uuu成人网一区二区三区| 精品视频一区二区三区免费| av一区二区三区四区| 精品一区二区三区香蕉蜜桃 | 日韩一区二区三区视频在线| 99久久精品久久久久久清纯| 久久se精品一区精品二区| 亚洲一区二区三区自拍| 国产精品久99| 国产亚洲欧美一级| 精品国产区一区| 日韩欧美国产一二三区| 欧美日韩视频一区二区| 91精品在线免费| 色综合夜色一区| 波多野结衣在线一区| 国产精品一二三区在线| 看电视剧不卡顿的网站| 首页国产丝袜综合| 一区二区三区精密机械公司| 夜夜嗨av一区二区三区网页| 日韩伦理电影网| 国产精品久久久久9999吃药| 国产精品色眯眯| 欧美国产综合一区二区| 国产亚洲精品资源在线26u| 欧美成人r级一区二区三区| 日韩欧美资源站| 欧美一级xxx| 欧美一区二区三区免费| 69av一区二区三区| 欧美日韩精品免费观看视频 | 一区二区三区欧美| 亚洲色大成网站www久久九九| 亚洲色图另类专区| 亚洲毛片av在线| 亚洲一区自拍偷拍| 亚洲手机成人高清视频| 亚洲欧美偷拍另类a∨色屁股| 国产精品国产三级国产普通话三级| 久久精品视频在线看| 国产精品嫩草久久久久| 国产精品天干天干在线综合| 国产精品沙发午睡系列990531| 中国av一区二区三区| 中文字幕不卡的av| 亚洲欧美偷拍卡通变态| 亚洲福利一二三区| 国产精品亚洲午夜一区二区三区| 99视频一区二区| 日韩一区二区三区观看| 国产精品免费看片| 日本美女一区二区| av在线不卡电影| 欧美一区二区视频在线观看 | 国产女同性恋一区二区| 亚洲一区二区三区四区在线| 精品一区二区三区在线观看国产 | 精品日韩一区二区三区| 国产婷婷一区二区| 婷婷丁香激情综合| 成人av在线播放网站| 日韩手机在线导航| 中文字幕亚洲视频| 久久国产麻豆精品| 欧美色老头old∨ideo| 国产日韩三级在线| 日韩和的一区二区| 色综合久久综合网97色综合 | 天天影视涩香欲综合网| 国产成人综合视频| 欧美一级高清片| 尤物在线观看一区| 成人中文字幕电影| 日韩一区二区三区免费看| 亚洲精品视频在线观看网站| 国产福利91精品| 欧美一区二区三区视频免费播放| 亚洲日本va午夜在线影院| 国产精品香蕉一区二区三区| 欧美一区二区三区四区视频| 一区二区三区四区不卡在线| 不卡免费追剧大全电视剧网站| 精品剧情v国产在线观看在线| 视频在线观看一区| 欧美四级电影网| 亚洲另类色综合网站| 成人av影院在线| 国产精品午夜电影| 国产一区二区三区黄视频| 日韩一区二区电影在线| 日韩av不卡一区二区| 欧美色图免费看| 亚洲一区二区三区小说| 91麻豆福利精品推荐| 亚洲日本在线观看| 92国产精品观看| 亚洲美女免费视频| 91免费版在线| 亚洲欧美aⅴ...| 91热门视频在线观看| 最近中文字幕一区二区三区| jlzzjlzz亚洲日本少妇| 国产精品国产三级国产a| av一区二区不卡| 亚洲三级视频在线观看| 色天使色偷偷av一区二区| 亚洲色图欧美偷拍| 在线精品视频小说1| 欧美亚洲国产一区二区三区| 精品粉嫩aⅴ一区二区三区四区| 亚洲欧洲日韩一区二区三区| 成人av影视在线观看| 国产精品久久久久久久久图文区| 成人精品国产免费网站| 国产精品国产精品国产专区不片| 99国产麻豆精品| 一区二区三区精品视频在线| 久久综合av免费| 菠萝蜜视频在线观看一区| 亚洲精品国产一区二区精华液 | 亚洲色图19p| 欧美无人高清视频在线观看| 综合网在线视频| 欧美日韩一卡二卡三卡| 日韩av高清在线观看| 精品国产欧美一区二区| 国产不卡在线播放| 一区二区欧美精品| 欧美一级一区二区| 国产不卡在线播放| 亚洲午夜久久久| 久久综合久久99| 91看片淫黄大片一级在线观看|