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

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

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

?? minigui--面向實時嵌入式系統的圖形用戶界面。此文檔介紹了miniguide體系結構。
?? 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一区二区三区免费野_久草精品视频
精品亚洲成a人在线观看| 伊人夜夜躁av伊人久久| 久久国产日韩欧美精品| 欧美一区二区网站| 美女mm1313爽爽久久久蜜臀| 日韩免费观看2025年上映的电影| 久草热8精品视频在线观看| 欧美成人伊人久久综合网| 久久国产综合精品| 国产蜜臀97一区二区三区| 99re8在线精品视频免费播放| 自拍偷自拍亚洲精品播放| 在线一区二区视频| 日韩在线观看一区二区| 久久久久久麻豆| 成人美女视频在线看| 亚洲精品中文在线观看| 日韩三级精品电影久久久| 国产一区不卡视频| 亚洲桃色在线一区| 7799精品视频| 国产91富婆露脸刺激对白| 亚洲靠逼com| 精品久久久久久久久久久久包黑料| 国产福利视频一区二区三区| 一区二区三区四区视频精品免费| 7777精品伊人久久久大香线蕉的| 国产精品一卡二| 亚洲欧美日本韩国| 精品国偷自产国产一区| av亚洲精华国产精华精华| 日韩精品福利网| 国产精品激情偷乱一区二区∴| 欧美人动与zoxxxx乱| 国产精品91一区二区| 亚洲一区二区三区三| 久久久久久久久久久99999| 91国偷自产一区二区使用方法| 麻豆精品国产91久久久久久| 亚洲欧美日韩成人高清在线一区| 欧美tickling网站挠脚心| 91丝袜美腿高跟国产极品老师| 麻豆成人av在线| 夜夜嗨av一区二区三区中文字幕 | 国产精品污网站| 欧美久久高跟鞋激| 成人精品国产福利| 老司机精品视频在线| 一区二区日韩av| 国产精品久久久99| 久久久91精品国产一区二区精品| 欧美一区欧美二区| 在线一区二区视频| 91亚洲精华国产精华精华液| 国模大尺度一区二区三区| 亚洲福利电影网| 最新国产成人在线观看| 国产欧美日本一区视频| 日韩一级成人av| 欧美高清性hdvideosex| 欧美在线影院一区二区| 91影院在线观看| 不卡的av电影在线观看| 国产麻豆精品久久一二三| 奇米在线7777在线精品| 日本系列欧美系列| 亚洲高清视频在线| 亚洲图片有声小说| 亚洲黄色小视频| 夜夜爽夜夜爽精品视频| 一区二区三区在线高清| 亚洲男女一区二区三区| 亚洲免费在线观看视频| 亚洲乱码中文字幕| 亚洲黄色av一区| 亚洲午夜久久久久久久久电影网| 一区二区在线观看视频| 亚洲激情五月婷婷| 亚洲一区二区三区四区不卡| 亚洲福利电影网| 婷婷综合在线观看| 日本亚洲视频在线| 久久国产精品第一页| 狠狠色丁香九九婷婷综合五月| 麻豆成人久久精品二区三区小说| 国内精品免费**视频| 国产麻豆精品在线观看| 国产成人免费网站| 日本系列欧美系列| 亚洲高清免费观看高清完整版在线观看| 国产精品久久三区| 亚洲色图制服丝袜| 亚洲国产成人91porn| 天天射综合影视| 精品一区中文字幕| 国产不卡视频一区二区三区| 99国产精品国产精品久久| 91福利国产成人精品照片| 欧美日产在线观看| 精品国产成人在线影院| 国产精品久久久久桃色tv| 一区二区三区在线影院| 麻豆中文一区二区| 成人免费毛片a| 欧美日韩国产bt| 精品国产污网站| 国产精品久久久久久亚洲毛片| 亚洲一区在线观看免费| 麻豆91免费观看| 91麻豆免费观看| 日韩一区二区在线观看| 国产亚洲制服色| 亚洲国产综合91精品麻豆| 青娱乐精品视频| jizz一区二区| 欧美日韩国产在线观看| 久久免费午夜影院| 亚洲国产另类精品专区| 国产麻豆精品久久一二三| 欧美午夜影院一区| 久久精品欧美日韩| 午夜视频一区二区| 国产盗摄视频一区二区三区| 欧美美女一区二区在线观看| 久久久久久免费网| 日韩中文字幕1| 91在线无精精品入口| 欧美大片日本大片免费观看| 自拍偷拍亚洲综合| 狠狠色伊人亚洲综合成人| 欧美视频中文字幕| 国产精品伦理一区二区| 九九**精品视频免费播放| 色999日韩国产欧美一区二区| 久久久久久久久一| 美国十次综合导航| 欧美中文字幕一二三区视频| 国产精品成人免费在线| 国内精品嫩模私拍在线| 在线综合亚洲欧美在线视频| 一区二区三区产品免费精品久久75| 日韩三区在线观看| 国产欧美日韩三区| 麻豆精品一区二区| 欧美日韩不卡在线| 亚洲蜜臀av乱码久久精品蜜桃| 国产成人在线视频网址| 精品国产免费久久| 亚洲图片欧美一区| 欧美亚洲综合另类| 亚洲精品欧美激情| 色综合久久中文字幕综合网| 国产精品久久久久一区二区三区| 国产乱人伦偷精品视频不卡| 日韩精品一区二区三区视频播放| 亚洲国产成人91porn| 在线观看亚洲a| 夜夜精品浪潮av一区二区三区| 不卡电影免费在线播放一区| 国产精品免费看片| 成人高清视频免费观看| 国产精品视频一二| 99久久精品一区二区| 国产精品不卡在线观看| yourporn久久国产精品| 国产精品久久久久aaaa| 国产精品夜夜嗨| 久久午夜老司机| 国产精品一二三在| 国产视频一区二区三区在线观看| 国产精品18久久久久久久久久久久| 精品理论电影在线观看| 国产自产高清不卡| 精品国产乱码久久久久久浪潮| 国内精品视频666| 久久久精品人体av艺术| 国产 欧美在线| 亚洲天天做日日做天天谢日日欢| 一道本成人在线| 午夜精彩视频在线观看不卡| 欧美一区二区国产| 黄色精品一二区| 中国av一区二区三区| 91久久国产最好的精华液| 亚洲一区二区在线免费看| 宅男噜噜噜66一区二区66| 国模一区二区三区白浆| 中文子幕无线码一区tr| 91成人国产精品| 久久精品国产一区二区三 | 一区二区三区成人在线视频 | 日韩视频免费观看高清完整版在线观看 | 视频一区二区三区入口| 日韩欧美中文一区| 国产乱码精品一品二品| 国产精品麻豆欧美日韩ww| 欧美在线观看你懂的| 久久国产视频网| 亚洲蜜桃精久久久久久久| 日韩情涩欧美日韩视频|