Code 128 免費字體下載 (ttf):Fonts2U (GNU/GPL)
原本很開心的下載好字體檔,然後打了幾個字,卻發現手機的 Barcode Scanner 完全無法讀取,原來這是因為 barcode 是有固定格式的,因此使用 barcode font 製作 barcode 不能只打幾個字,格式必須要按照 Code 128 的規範才行。
先來了解 Code 128 的格式,共有 5 + 2(頭尾Quiet Zone) 個區域,但這裡可以先不用了解這麼系,簡單來說我們依序需要: 開始、內容、驗證碼、結束 四個不同的區塊,產生出來的 barcode 必須符合這個格式才能被 Reader 讀取。
※ 底下會用到這個表格,請一起參考,提醒:後方的 Character 有部分僅是針對此字體。
Code 128 一共有三種字元集,分別是 Set A~C ,每個 Set 都有自己適合使用的內容,這三種 Set 分別為:
- Set A:大寫英文、數字、符號、控制字元
- Set B:大寫英文、數字、符號、小寫英文
- Set C:連續兩個數字,從 00~99 (較為特別,最後再說明)
每個 Set 都有適合使用的地方,例如:需要產生小寫英文字的 barcode,就必須使用 Set B。
假設現在要產生一個 Code 128 的條碼: XYZ,底下將一步一步描述該如何建立。
※ 挑選字元集
由於這裡只需要大寫英文,所以可以選擇使用 Set A 或 Set B,底下以 Set A 為例子。
※ 選擇開始碼
看到表格最下方,可以看到三個開始碼,分別為 Start A~C , value 為 103~105。代表字元則是:Ë , Ì , Í。
開始碼也就宣告了我們要使用哪種字元集,假設我們要使用 Set A , 這裡就要選擇 value 為 103 的 Ë
這邊要特別注意,表格中所有這類(Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï)的文字並非絕對,而是根據 barcode font 提供的文字而定,所以使用不同人製作的 barcode font 都要確定這些 value 他使用那些符號來表示。
※ 填寫內容
選好開始碼之後,接著就是填寫內容,由於我們用 Set A,因此先看表格中 Set A 的部分,找到我們要的 X、Y、Z,對到後方 Character,剛好也就是 X,Y,Z。
PS : 通常 barcode font 實作的都會按照 X 就是 X 這種方式處理
因此我們現在的字碼有:ËXYZ
註:若內容中有用到特殊字元,如 value 為 99 的 "Code C" 等,這也算在條碼內容裡面。
※ 計算驗證碼
這是最麻煩的部分,我們要在內容後方加上一個驗證碼,計算規則如下:
- 內容的部分找出他的 value (如: X=56 , Y=57 , Z=58)
- 分別乘上自己的於內容中所在順位 (如: X=56*1 , Y=57*2 , Z=58*3)
- 將上面算出來的數值全部相加 (如: 56+114+174 = 344 )
- 加上開始碼的 value (如: 344+103 = 447)
- 將最後結果對 103 取餘數, PS : 103 是固定數值,和我們選的 Start A 無關
- 找出 value 為該餘數的字元,這就是驗證碼
value 為 35 的 Character是 C,因此 C 就是驗證碼
所以我們現在的字碼為:ËXYZC
※ 加上結束碼
沒甚麼好說,就是將代表結束的 Stop 字碼放在最後面 ( value 106 , char Î )。
所以最後就是:ËXYZCÎ
這個就是用這個 font 要產生出正確的 Code 128 所需要的文字了。
底下為使用此字體產生 XYZ 的範例,大多數主流瀏覽器應該都支援,
可以試著用 Barcode Scanner 掃描,以及滑鼠選取條碼複製,貼到
別的地方看看內容:
※ Set C 雙數字用法
Code 128 提供,連續兩個數字從 00~99 的組合,若條碼內容以數字為主的時候,可以使用此字元集來進行資料長度的縮減。假設今天要產生條碼是 20170226:
使用 Set A 的字串為 Ë20170226aÎ ;而使用 Set C 的字串為 Í41":_Î,條碼:
可以注意到,使用 Set C 的條碼較短,使用的內容文字是 41": 也短上許多。
我們直接參考對照表,分別找出「4」、「1」、「"」、「:」的部分:
可以看到,Character 4 在 Set C 中代表 "20" ; Character 1 代表 17.... 依此類推。
因此 41": 用在 Set C 時,所代表的內容是 20170226 。
如此可以達到資料縮減的目的。
不過使用 Set C 縮減資料時,有一定的規則,只有在合乎此規則的情況下才可以有效縮短條碼長度,否則可能不但沒有縮減,反而還增加長度。
更詳細的介紹可以參考下一篇《Code 128-C 最佳化規則及轉碼 》。
請問要如何使用CODE 128、CODE 39製作
回覆刪除1. 有ENTER功能的條碼?
2. 有TAB功能的條碼?
3. 可以按熱鍵ALT+A的功能?