2015-11-04 106 views
0

我需要在我的Qt應用程序中使用一些數字自定義字體,但公司要求我使用圖像作爲字體,不允許使用字體文件(例如:ttf)。Qt如何從圖像創建字體?

這樣的字體圖像:enter image description here

所以我不知道是可能的字體圖像轉換爲QFont?像Qt字體生成器一樣的 。 還是其他解決方案?

回答

1

沒有任何東西可以支持你在找的東西。您需要通過從您的映像以編程方式構建自己的TrueTypeFont數據來解決該公司規則,並將其保存在內存中,並使用addApplicationFontFromData(const QByteArray & fontData)將其加載到應用程序中。

不幸的是,我找不到一個這樣做的庫,TTF格式顯得非常複雜。我會建議看看這個開源項目的字體創建。也許你可以用它作爲一個起點? http://fontforge.github.io/en-US/

您可能想知道您的公司告訴您無法使用自定義字體的原因。 (我只記得讀過QT在將字體存儲爲「資源」時遇到困難,如果這不是由於版權問題引起的,那麼您可以建議不要使用圖像,而是將整個文件以源代碼的形式存儲爲文本格式,如基本-64。然後在啓動時將其轉換爲二進制文件,然後將其作爲QByteArray中的一種新字體進行加載。

+0

感謝您的回答 公司他們毫無理由地拒絕了字體文件,甚至告訴他們我能夠將圖像文件轉換爲字體文件,由免費的字體創建器。 因爲設計者只給我提供了字體圖像,所以他們要求我使用它作爲顯示數字的字體資源。我會看到FontForge的源代碼,試着去理解它作品。 – Jiu

0

我想這是關於版權問題?有許多ttf字體可用於完全免費的商業用途。例如。看看Droid Sans Mono:https://www.google.com/fonts/specimen/Droid+Sans+Mono

否則,很高興知道ttf不被允許的原因。

可以從矢量圖形創建字體。

如果您對每個字母都有合理的高分辨率圖像(如果不是矢量圖形),則可以嘗試將它們轉換爲矢量圖形(SVG)。

之後,您可以使用工具將SVG轉換爲字體。這可能是一個可以與QFont一起使用的ttf字體。