標籤:

PHP 怎麼轉化 webdings 字體的文字?

我的一個php文件編碼為gbk的,我想轉化為utf8的編碼格式,其中有幾個字,字體是webdings,通過iconv沒有轉化過來。我該怎麼做,用php語言才能把其轉化為utf8的編碼格式


《編碼》

你有個小盒子,裡面裝了 256 枚印章,每一枚都有編號。你參加了學校的「印章密碼愛好者興趣小組」,裡面有個外國來的小女孩,經常跟你玩一個遊戲,比如你問「今年暑假你去了哪裡?」她回答說「78,89,67」。因為你們都如此熟悉自己的印章,你一下子就明白了她說的是「NYC」。

「那你出生在哪裡呢?」,你問。

她遲疑了一下,想了想說,「77,195,188,110,99,104,101,110」。

你愣住了。一盒印章有 256 個,但是大家平時基本只用前 128 個。你知道 77 是 M,可 195 是什麼?你一時想不起來,只好慚愧地拿出隨身攜帶的那盒印章,拿出 195 和 188 號按在紙上:

「??」。

所以小女孩說的是「M??nchen」。可這是啥意思呢?? 又 ? 月台?你疑惑地望著小姑娘,小姑娘也疑惑地望著你。只見她也轉身拿出一個盒子打開來——你頓時傻了眼——裡面密密麻麻地居然排了上千個小印章!而且有好多層!小姑娘熟練地翻到某一層,俏生生用指甲挑出一枚小印章來,在紙上印下一個符號:

「ü」

然後把印章遞給你。你拿過來一看,好傢夥,上面居然刻著「C3 BC」,另有一行小字「195 188」。所以……對於她來說,195 188 就代表能印出「ü」的印章了……可是印象里你的盒子里也有「ü」呀,於是你把盒子里的第 252 號印章拿出來給她看,正是一個「ü」。就在你們面面相覷茫然無措快要哭出來的時候,興趣小組的輔導員大叔走過來,親切地說:「小朋友們,別難過,要繼續相信愛情」,然後從牆上的書架里拿下一本封面上印著《ICONV》的大書,熟練地翻到「iso8859」這一章,指著「00fc ü:252」條目里後面的那個數字說:「你們看!iso8859 的 ü 就是 252 號!」;然後他又翻到「utf8」這一章,指著「00fc ü:C3 BC」說:「而 utf8 的 ü 就是十六進位 C3,BC,也就是十進位的 195,188!」。

大叔合上大書,把你的印章盒子翻過來,指給你看背後印著的一行小字:「Encoded in iso8859」,而那個外國小女孩的盒子背面則印著「Encoded in utf8」。「我只能幫你到這裡啦,小夥子」,大叔看著你們似懂非懂的樣子,笑著說。

雖然你不太明白為什麼要有這樣一本書,為什麼不能每個盒子都裝一樣的東西,但是從此之後,如果碰到小女孩說出不認識的數字,你們就會一起去查閱那本《ICONV》,從此過上了兩小有猜的幸福生活。

——————外一篇——————

《字體》

作為一個印章收集愛好者,你一生積攢了很多隻盒子,每個盒子裡面有很多帶編號的小孔,每個小孔裡面插著一隻印章。有個盒子上面寫著「Arial」,拿出裡面編號為 65 的印章,印在紙上是這樣的:

很多其他盒子里的 65 號印章,圖案看起來都很相似,比如「Brush Script」盒子裡面的 65 號:

直到有一天你遇到有個盒子上面寫著「Webdings」,裡面編號為 65 的印章,印在紙上居然是這樣的:

……於是你想起小時候跟你一起玩的那個小姑娘,用顫抖的雙手拿出 78,89,67 三枚印章,按在紙上:

————————

閱讀完以上兩篇小小說後請思考:

  1. 編碼和字體的關係是怎樣的?
  2. 「00fc ü:252」 和 「00fc ü:C3 BC」裡面的「00fc」可能會是什麼?
  3. iconv 是做什麼用的?

————————

思考題答案:

  1. 字體描述的是字元所具備的外形,編碼則是對於某個編號應該代表哪個字元而產生的約定。字體會以某種編碼排列,但是編碼和具體的某字體之間沒有必然聯繫,就好比 78 可以是字母 N,卻也可以是一隻眼睛。
  2. 把全世界所有可能出現的符號搜集到一起列成一個表,給裡面的每個字元編列一個獨一無二的號碼,這個編碼計劃叫做 Unicode。而那些號碼則叫做(unicode 的)code point。00fc 就是 ü 在 Unicode 編碼計劃里的 code point。
  3. 某一個特定字元在 Unicode 里的 code point 可以通過 iconv 找到對應的 utf8 或者 iso8859 的 code point,所以一個字元在 iso8859 里的 code point 也就可以通過 iconv 找到對應的 utf8 的 code point。換句話說,iconv 可以轉換編碼,但是具體這個編碼用什麼字體顯示,不關 iconv 的事情。

謝邀。


關於字元編碼:字元編碼入門


濤吳的回答很生動,編碼和字體應分清。為什麼會有這樣疑問,是轉換後顯示不正常么?


你輸入的是pinyin "da" 並選擇」大「

系統錄入的是根據當前編碼的0x34 0x35

字型檔就是圖形庫,或者矢量圖形庫,根據編碼0x34 0x35 來顯示 "大"

不同字型檔同樣編碼的圖像畫的可能不一樣。

——————但是這裡我自己也有個問題:

utf8和gbk都可以打出「大」,編碼和字型檔對應嗎?是怎麼對應的?還是有個中間層來映射?

(很久以前看過libiconv,freetype的代碼,但是現在實在想不起來了。)


求問啊 現在打開ppt很多東西都自動轉成webding字體,無法調回,怎麼辦呀

謝謝


都 是大神啊,菜鳥路過


推薦閱讀:

圖中字母 U 看起來和 V 很相似,這究竟是因為特定字體的設計使然,還是為了遵循某種特殊書寫規則?
既然瀏覽器能用演算法將正常字體加粗和變斜,那麼斜體有必要嗎?
圖中阿拉伯文的字體是什麼?
PPT 中音標亂碼,如何解決?
米芾的字體為什麼是簡體字?

TAG:字體 | PHP |