日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
      西西首頁 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專題合集

      字模點陣字庫生成器(FontMaker)

      2.0.1 綠色版
      • 字模點陣字庫生成器(FontMaker)2.0.1 綠色版
      • 軟件大小:14.9M
      • 更新時間:2013-11-14 14:22
      • 軟件語言:中文
      • 軟件廠商:
      • 軟件類別:國產(chǎn)軟件 / 免費軟件 / 編程輔助
      • 軟件等級:4級
      • 應(yīng)用平臺:WinAll, WinXP
      • 官方網(wǎng)站:暫無
      • 應(yīng)用備案:
      好評:50%
      壞評:50%

      軟件介紹

      本軟件支持生成多國文字非等寬顯示點陣字庫(由矢量字庫轉(zhuǎn)點陣字庫)?梢宰杂缮扇我庾煮w、不同大小的點陣字庫,主要應(yīng)用在所有需要文字顯示(點陣字庫支持)的嵌入式系統(tǒng)中。
      特點: 轉(zhuǎn)換速度非?欤爰墸,可以免費支持 16 點陣字庫的轉(zhuǎn)換。

      使用說明:

      1. 轉(zhuǎn)換字庫,操作步驟如下:
      1). 選擇一個您要轉(zhuǎn)換的矢量字體文件(*.ttf)。
      先將c:\windows\fonts 目錄下的字體文件拷貝(ctrl+c)出來,然后本軟件即可選擇。
      建議去網(wǎng)上找一個ArialUni.ttf字庫(可找本人提供),目前l(fā)inux系統(tǒng)用的就是這個,字符非常全面。
      下載地址: http://ishare.iask.sina.com.cn/f/4942778.html;
      2). 選擇編碼類型(MBCS or Unicode),根據(jù)需求而定。
      3). 選擇字體大小,根據(jù)需求而定,目前只支持16,24,32,40,48,56,本軟件可根據(jù)需求而改成大字體 ( > 56 )。
      4). 選擇需要轉(zhuǎn)換的字符集(支持多選),根據(jù)需求而定。比如:我要用到簡體中文,則必須選簡體中文,同時還可選其它。
      5). 選擇輸出文件。(BIN 文件始終默認輸出,其它可選)
      6). 選擇輸出目錄,即將您生成的文件存放到您選擇的這個目錄中。
      7). 點擊 build 按鈕,稍等片刻,即可生成您所想要的字庫文件。

      注意:

      如果您選擇的是MBCS 編碼方式,又有選擇多個字符集,則會輸出多份上述文件。
      如果您選擇的是NICODE編碼方式,不論你選多少個字符集,都只會輸出一份上述文件。

      如果生成字庫失敗,則有可能你選擇的字體文件(*.TTF)原本就不包含該字符集的字符信息。 比如:宋體中不存在韓文字符,即用宋體生成的字庫無法支持韓文顯示。
      參考辦法: 對照系統(tǒng)自帶的字符映射表,里面就可以選擇不同的字體,字符集(打開“高級查看”)進行參照。

      開啟字符映射表的方法:

      1. 以命令方式運行開啟,直接鍵入 "charmap"即可。
      2. 程序-->附件-->系統(tǒng)工具--->字符映射表

      2. 字庫預(yù)覽,操作步驟如下:
      1). 選擇一個您要預(yù)覽的字庫文件(*.bin)。將會自動打開分析出其編碼類型,點陣大小,包含的字符集。
      2). 在 goto code:后面的編輯框中,輸入您要查看字符的編碼(如果當(dāng)前選擇的字庫*.BIN 是unicode編碼,則輸入unicode碼,否則輸入mbcs 編碼),回車后即可看到其顯示效果,還可得知其字符實際顯示寬度。

      另外,支持縮放預(yù)覽。 拖動滑動條,可以放大縮小其預(yù)覽效果。

      3. 注冊

      在沒有注冊的情況下,只支持16點陣字庫的轉(zhuǎn)換,注冊后可以支持24,32,40,48,56 ,還可根據(jù)需要修改到支持其它點陣的字體。
      注冊方法: 點擊 "Aoubt..." 按鈕,則會彈出一個對話框,再點擊 "注冊..." 按鈕根據(jù)提示操作即可。 

      功能描述

      1.支持所有 windows 字符集,詳情如下:
      CP932, 日文Shift-JIS, 如:日語
      CP936, 簡體中文GBK, 如:中文(中華人民共和國), 中文(香港特別行政區(qū)), 中文(新加坡)
      CP949, 韓文, 如:朝鮮語
      CP950, 繁體中文Big5, 如;中文(臺灣), 中文(澳門特別行政區(qū))
      CP874, 泰文, 如:泰語
      CP1250, 中歐, 如:捷克語,匈牙利語,波蘭語,羅馬尼亞語,克羅地亞語,斯洛伐克語,阿爾巴尼亞語,斯洛文尼亞語,塞爾維亞語(拉丁文)
      CP1251, 西里爾文, 如:保加利亞語,俄語,烏克蘭語,比利時語,馬其頓語(FYROM),哈薩克語,吉爾吉斯語,韃靼語,蒙古語,阿塞拜疆語,烏茲別克語,塞爾維亞語
      CP1252, 西歐(拉丁文I), 如:加泰隆語,丹麥語,德語,英語,西班牙語,芬蘭語,法語,冰島語,意大利語,荷蘭語,挪威語,葡萄牙語,印度尼西亞語,巴士克語,南非語,法羅語,馬來語,斯瓦希里語,加里西亞語,瑞典語
      CP1253, 希臘文, 如:希臘語
      CP1254, 土耳其文, 如:土耳其語,阿塞拜疆語,烏茲別克語
      CP1255, 希伯來文, 如:希伯來語
      CP1256, 阿拉伯文, 如:烏都語,波斯語,阿拉伯語(伊拉克,埃及,利比亞,阿爾及利亞,摩洛哥,突尼斯,阿曼,也門,敘利亞,約旦,黎巴嫩,科威特,阿聯(lián)酋,巴林,卡塔爾)
      CP1257, 波羅的海文, 如:愛沙尼亞語,拉脫維亞語,立陶宛語,
      CP1258, 越南, 如:越南語
      unicode 可以由上述字符集根據(jù)需求自由合成。

      2. 支持 BIN(*.bin), TXT(*.txt), BMP(*.bmp) 文件輸出。

      A. BIN 文件,即字庫文件(必生成):存儲的是我們最終需要用到的點陣字庫信息。其文件結(jié)構(gòu)由四大部分組成:文件頭、段信息、檢索表、點陣信息。
      1). 文件頭,指的是文件的前十六個字節(jié)(BYTE),描述信息如下結(jié)構(gòu):

      typedef struct tagFontLibHeader{
      BYTE magic[4]; //'U'(or 'M'), 'F', 'L', X 'U'(or 'M')---Unicode(or MBCS) Font Library, X: 表示版本號. 分高低4位。如 0x12表示 Ver 1.2
      DWORD Size; /* File total size */
      BYTE nSection; //MBCS:是否包含檢索表。 Unicode:共分幾段數(shù)據(jù)
      BYTE YSize; /* height of font */
      WORD wCpFlag; // codepageflag: bit0~bit13 每個bit分別代表一個CodePage 標志,如果是1,則表示當(dāng)前CodePage 被選定,否則為非選定。
      char reserved[4]; // 預(yù)留字節(jié)
      } FL_Header;

      2). 段信息,只針對 UNICODE 編碼有效,占字節(jié)數(shù):nSection*sizeof(FL_SECTION_INF)。結(jié)構(gòu)如下:

      typedef struct tagFlSectionInfo{
      WORD First; /* first character */
      WORD Last; /* last character */
      DWORD OffAddr; /* 指向的是當(dāng)前SECTION包含的 UFL_CHAR_INFO第一個字符信息的起始地址 */
      } FL_SECTION_INF, *PFL_SECTION_INF;


      3). 檢索表,只針對非等寬的MBCS(不包含簡中、繁中、日文、韓文,因這些都將等寬處理,故無需檢索表)和 UNICODE 字庫有效。


      typedef struct tagUflCharInfo{
      #ifdef SUPPORT_MAX_FONT // 如采用大字體結(jié)構(gòu),最大可支持248點陣
      DWORD OffAddr; // 當(dāng)前字符點陣數(shù)據(jù)的起始地址
      BYTE Width; // 字符點陣的像素的寬度
      #else
      DWORD OffAddr : 26; // 當(dāng)前字符點陣數(shù)據(jù)的起始地址
      DWORD Width : 6; // 字符點陣的像素的寬度( 目前最大支持 56 點陣)
      #endif
      } UFL_CHAR_INDEX;

      如果是非等寬的MBCS字庫,則占字節(jié)數(shù)為:0xff * sizeof(UFL_CHAR_INDEX);
      如果是Unicode字庫,則占字節(jié)數(shù)為:((xxx[0].Last - xxx[0].First + 1)+...+(xxx[nSection-1].Last - xxx[nSection-1].First + 1)) * sizeof(UFL_CHAR_INDEX);

      4). 點陣信息,即當(dāng)前所有包含字符集中字符的點陣信息集合。數(shù)據(jù)存儲方式為:橫向高到底位存儲。如: 10110011 00011010 即為 B3. 1A

      例如:顯示編碼 code = xxxx 的字符。分為以下三種情況,分別操作步驟如下:

      (1). 非等寬的MBCS字庫
      a. 先讀出FL_Header信息;
      b. 根據(jù)這個sizeof(FL_Header) + code * 2找到code的 UFL_CHAR_INDEX信息;
      c. 根據(jù)UFL_CHAR_INDEX的OffAddr再找到當(dāng)前code的點陣信息;
      d. 最后根據(jù)FL_Header.Ysize、UFL_CHAR_INDEX.Width、以及點陣信息即可show出當(dāng)前字符。
      (2). 等寬的 MBCS字庫 (包括簡中、繁中、日文、韓文)
      a. 先讀出FL_Header信息;
      b. 計算出code在當(dāng)前字符集中的索引值(index),然后根據(jù)這個sizeof(FL_Header) + index * (FL_Header.Ysize/8*FL_Header.Ysize)找到code的點陣信息;
      c. 然后根據(jù)FL_Header.Ysize與點陣信息即可show當(dāng)前字符。

      計算出當(dāng)前code在你當(dāng)前字符集(codepage)中位置,即索引值。此函數(shù)主要針對MBCS編碼中的簡中,繁中,日文,韓文,
      static long GetPosWithMbcs(UINT code, UINT codepage)
      {
      long lIdx = -1;

      BYTE R = (code >> 8) & 0xFF; //區(qū)碼
      BYTE C = code & 0xFF; //位碼

      switch(codepage)
      {
      case CP932: // 日文
      if(R >= 0x81 && R <= 0x9F)
      {
      if(C >= 0x40 && C <= 0x7E)
      lIdx = (R-0x81)*188 + (C-0x40); //188 = (0x7E-0x40+1)+(0xFC-0x80+1);
      else if(C >= 0x80 && C <= 0xFC)
      lIdx = (R-0x81)*188 + (C-0x80)+63; // 63 = 0x7E-0x40+1;
      }
      else if(R >= 0xE0 && R <= 0xFC)
      {
      if(C >= 0x40 && C <= 0x7E)
      lIdx = 5828 + (R-0xE0)*188 + (C-0x40); // 5828 = 188 * (0x9F-0x81+1);
      else if(C >= 0x80 && C <= 0xFC)
      lIdx = 5828 + (R-0xE0)*188 + (C-0x80)+63;
      }
      break;

      case CP936: // 簡中
      if((R >= 0xA1 && R <= 0xFE) && (C >= 0xA1 && C <= 0xFE))
      lIdx = (R-0xa1)*94 + (C-0xa1); //94 = (0xFE-0xA1+1);
      break;

      case CP949: // 韓文
      if(R >= 0x81)
      {
      if(C >= 0x41 && C <= 0x7E)
      lIdx = ((R-0x81) * 188 + (C - 0x41)); // 188 = (0x7E-0x41+1)+(0xFE-0x81+1);
      else if(C >= 0x81 && C <= 0xFE)
      lIdx = ((R-0x81) * 188 + (C - 0x81) + 62); // 62 = (0x7E-0x41+1);
      }
      break;

      case CP950: // 繁中
      if(R >= 0xA1 && R <= 0xFE)
      {
      if(C >= 0x40 && C <= 0x7E)
      lIdx = ((R-0xa1)*157+(C-0x40)); // 157 = (0x7E-0x40+1)+(0xFE-0xA1+1);
      else if(C >= 0xA1 && C <= 0xFE)
      lIdx = ((R-0xa1)*157+(C-0xa1)+63); // 63 = (0x7E-0x40+1);
      }
      break;
      default:
      break;
      }
      return lIdx;
      }

      (3). Unicode字庫 (可以包括所有字符集)
      a. 先讀出FL_Header信息;
      b. 分析當(dāng)前字符在第幾段,比如在第n段,就可根據(jù)這個xxx[n].OffAddr+(code - xxx[n].First)* sizeof(UFL_CHAR_INDEX)找到字符索引信息(UFL_CHAR_INDEX);
      c. 根據(jù)UFL_CHAR_INDEX的OffAddr再找到當(dāng)前code的點陣信息;
      d. 最后根據(jù)FL_Header.Ysize、UFL_CHAR_INDEX.Width、以及點陣信息即可show出當(dāng)前字符。

      B. TXT 文件(可選擇生成): 存儲的是當(dāng)前字庫包含字符的字模顯示效果。詳見轉(zhuǎn)換后結(jié)果。
      C. BMP 文件(可選擇生成): 是將當(dāng)前字庫中所有字符點陣信息整合成的一個位圖文件。(只針對 MBCS 編碼有效)詳見轉(zhuǎn)換后結(jié)果。

      如何從字庫文件(*.bin)中獲取點陣信息?

      由于選擇的編碼類型(MBCS 或 Unicode)以及字符集不同,則輸出的字庫文件所包含的數(shù)據(jù)段也會不同。如下例表:

      數(shù)據(jù)段 MBCS-CJK MBCS-非等寬 Unicode
      -------------------------------------------------------------------
      文件頭 Y Y Y
      段信息 N N Y
      檢索表 N Y Y
      點陣信息 Y Y Y

      Y: 包含
      N: 不包含

      注釋:
      MBCS: MultiByteCharset,即多字節(jié)字符集(本地字符集)。
      CJK: China,Japan,Korea,即中(簡體,繁體)日韓字符集。
      非等寬: 每個字符的顯示寬度不等。 如字符'i','M'。 除了 CJK 外,其它都默認為非等寬字符集。
      Unicode: 即統(tǒng)一編碼(寬字節(jié)字符集)

      具體舉例解析如下:

      注意:
      a. 數(shù)據(jù)都是低位在前,高位在后;
      b. 寬高都以像素為單位;
      c. 字符集從低到高順序分別為:日文,簡中,韓文,繁中,泰文,中歐,西里爾,西歐,希臘,土耳其文,希伯來文,阿拉伯文,波羅的海文,越南文;

      A. MBCS-CJK (等寬)

      00000000h: 4D 46 4C 10 50 FE 03 00 00 10 02 00 00 00 00 00
      00000010h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000020h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000030h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000040h: 00 00 00 00 30 00 18 00 0C 00 04 00 00 00 00 00
      ...

      解析如下:
      1). 文件頭 ( 前 16 Byte )

      4D 46 4C 10 -- 標識頭,判斷是否為合法的字庫文件。
      4D = 'M', 表示該文件為 MBCS 編碼格式的字庫文件。
      46 = 'F', 4C = 'L'
      10 表示該字庫文件版本信息為: Version 1.0
      50 FE 03 00 -- 文件總長度
      00 -- 是否包含檢索表。 0-標識無檢索表
      10 -- 字體高度 (寬高都以像素為單位) 0x10 == 16
      02 00 -- 選擇的字符集標志位。 1-標識選擇, 0-標識未選擇. 故得出當(dāng)前選擇為: 簡中字符集。
      00 00 00 00 -- 預(yù)留字節(jié)

      2). 點陣信息
      因為GB2312 的首個字符:0xA1A1, 它的點陣數(shù)據(jù)起始地址為 0x10,數(shù)據(jù)長度為:((字體高度+7)/8)* 字體高度 = ((16+7)/8)*16 = 32.
      故取如下 16 字節(jié),即為字符0xA1A1的點陣信息。
      00000010h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000020h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

      同理如下即為字符0xA1A2的點陣信息。
      00000030h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000040h: 00 00 00 00 30 00 18 00 0C 00 04 00 00 00 00 00

      由于等寬,所以所有字符的點陣數(shù)據(jù)長度都為:((字體高度+7)/8)* 字體高度 = ?

      B. MBCS-非等寬
      Sample 子目錄下的文件arialuni16_CP1252.bin, 文件內(nèi)容如下:

      00000000h: 4D 46 4C 10 90 1A 00 00 01 10 80 00 00 00 00 00
      00000010h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000020h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000030h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000040h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000050h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000060h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000070h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000080h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000090h: 10 04 00 10 20 04 00 10 30 04 00 18 40 04 00 24
      ...
      00000410h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      00000420h: 00 00 40 40 40 40 40 40 40 40 00 40 40 00 00 00
      ....

      解析如下:
      1). 文件頭 ( 前 16 Byte )

      4D 46 4C 10 -- 標識頭,判斷是否為合法的字庫文件。
      4D = 'M', 表示該文件為 MBCS 編碼格式的字庫文件。
      46 = 'F', 4C = 'L'
      10 表示該字庫文件版本信息為: Version 1.0
      90 1A 00 00 -- 文件總長度
      01 -- 是否包含檢索表。 1-標識有檢索表
      10 -- 字體高度 0x10 == 16
      80 00 -- 選擇的字符集標志位。 1-標識選擇, 0-標識未選擇. 故得出當(dāng)前選擇為: 西歐字符集。
      00 00 00 00 -- 預(yù)留字節(jié)

      2). 檢索表
      從 00000010h 開始,每 4 個字節(jié)表示一個字符的檢索信息, 且從字符 0x0 開始。故空格字符(' ')的檢索信息(00000090h)為:10 04 00 10
      即得出一個 32 位數(shù)為: 0x10000410(十六進制) --- (00010000 00000000 00000100 00010000).
      高 6 位,表示當(dāng)前字符的寬度。 故得出 000100 -- 4 (字庫寬度為 4 )
      低 26 位, 表示當(dāng)期字符的點陣信息的偏移地址。故得出 00 00000000 00000100 00010000 -- 0x410 (點陣信息的起始地址為 0x410)

      3). 點陣信息
      由于空格字符的起始地址為 0x410,且數(shù)據(jù)長度為:((字體寬度+7)/8)* 字體高度 = ((4+7)/8)*16 = 16.
      故取如下 16 字節(jié),即為空格字符的點陣信息。
      00000410h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

      同理如下即為字符'!' 的點陣信息。
      00000420h: 00 00 40 40 40 40 40 40 40 40 00 40 40 00 00 00


      C. Unicode (具體請參閱文件 .\Demo\ReadUnicode.c)

      00000000h: 55 46 4C 10 28 AB 07 00 01 10 81 00 00 00 00 00
      00000010h: 20 00 FF FF 18 00 00 00 98 FF 03 10 A8 FF 03 10
      ...
      0003ff90h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0003ffa0h: 00 00 00 00 00 00 00 00 00 00 40 40 40 40 40 40
      0003ffb0h: 40 40 00 40 40 00 00 00 00 00 48 48 48 48 00 00
      ...
      解析如下:
      1). 文件頭 ( 前 16 Byte )

      55 46 4C 10 -- 標識頭,判斷是否為合法的字庫文件。
      55 = 'U', 表示該文件為 UNICODE 編碼格式的字庫文件。
      46 = 'F', 4C = 'L'
      10 表示該字庫文件版本信息為: Version 1.0
      28 AB 07 00 -- 文件總長度
      01 -- 包含幾個Section。 1- 1 Section ( 在不包括CJK時,會分成3 Section)
      10 -- 字體高度 0x10 == 16
      81 00 -- 選擇的字符集標志位。 1-標識選擇, 0-標識未選擇. 故得出當(dāng)前選擇為: 日文+西歐字符集。
      00 00 00 00 -- 預(yù)留字節(jié)

      2). 段信息 (n section * sizeof(FL_SECTION_INF) = 1 * 8 = 8))
      20 00 -- First character
      FF FF -- Last character
      18 00 00 00 -- OffAddr; /* 指向的是當(dāng)前SECTION中First character對應(yīng)的 UFL_CHAR_INDEX信息的起始地址 */

      3). 檢索表 ((Section[0].Last - Section[0].First + 1) * 4 + (Section[n-1].Last - Section[n-1].First + 1) * 4)
      每 4 個字節(jié)表示一個字符的檢索信息, 且從字符Section[0].First 開始。故字符0x20的檢索信息(起始地址 =
      (字符的unicode碼 - Section[x].First) × 4 + Section[x].OffAddr, x 為當(dāng)前字符處在的section索引值,可判斷得出。)為:98 FF 03 10
      即得出一個 32 位數(shù)為: 0x1003FF98(十六進制) --- (00010000 00000011 11111111 10011000).
      高 6 位,表示當(dāng)前字符的寬度。 故得出 000100 -- 4 (字庫寬度為 4 )
      低 26 位, 表示當(dāng)期字符的點陣信息的偏移地址。故得出 00 00000011 11111111 10011000 -- 0x3FF98 (點陣信息的起始地址為 0x3FF98)

      3). 點陣信息
      由于空格字符的起始地址為 0x3FF98,且數(shù)據(jù)長度為:((字體寬度+7)/8)* 字體高度 = ((4+7)/8)*16 = 16.
      故取如下 16 字節(jié),即為空格字符的點陣信息。
      0003ff98h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

      同理如下即為字符0x21 的點陣信息。
      0003ffA8h: 00 00 40 40 40 40 40 40 40 40 00 40 40 00 00 00

      軟件標簽: 點陣字庫

      軟件截圖

      字模點陣字庫生成器(FontMaker) 2.0.1 綠色版

      其他版本下載

      最新評論查看所有(1)條評論 >

      第 1 樓 湖南省益陽市 網(wǎng)友 客人 2013/11/14 23:47:20
      如果單做字體設(shè)計用CDR Fontmaker等軟件結(jié)合,就可以很方便的設(shè)計全套英文字體,漢子字體需要做的實在是太多了.

      支持( 0 ) 蓋樓(回復(fù))

      發(fā)表評論

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      查看所有(1)條評論 > 字數(shù): 0/500

      TOP
      軟件下載