讓程式使用自帶的字型2

2021-08-17 02:49:06 字數 2318 閱讀 1417

之前寫過一篇部落格,說明關於載入自帶字型的。不過後來發現使用addfontresource函式缺點不少。主要是建立的字型不是自己程式私有的,其他程式也可以使用到。而且函式呼叫後會在程式目錄建立乙個.fot格式的檔案。後來再次翻閱msdn時發現了addfontmemresourceex函式,這個函式可以從記憶體緩衝中載入字型,並且建立的字型是私有的,也不會建立fot檔案。所以又封裝了乙個簡單的類來為程式新增自帶的字型。

[cpp]view plain

copy

print

?#pragma once

class caddmemfont  

;  

#pragma once

class caddmemfont

;

[cpp]view plain

copy

print

?#include 「sdtafx.h」

caddmemfont::caddmemfont(void)  

: m_hfont( null )  

caddmemfont::~caddmemfont(void)  

bool caddmemfont::addfont(lpctstr szfilepath)  

dword dwfilesize    = getfilesize(hfile, null);  

byte* lpbuffer      = new

byte[dwfilesize+1];  

dword dwreadsize    = 0;  

if (!readfile( hfile, lpbuffer, dwfilesize, &dwreadsize, null))  

lpbuffer[dwreadsize] = 』\0』;  

dword dwfontnumber  = 0;  

m_hfont = addfontmemresourceex(lpbuffer, dwreadsize, 0, &dwfontnumber);  

if ( m_hfont == null )  

return

true;  

}  

#include "sdtafx.h"

caddmemfont::caddmemfont(void)

: m_hfont( null )

caddmemfont::~caddmemfont(void)

bool caddmemfont::addfont(lpctstr szfilepath)

dword dwfilesize = getfilesize(hfile, null);

byte* lpbuffer = new byte[dwfilesize+1];

dword dwreadsize = 0;

if (!readfile( hfile, lpbuffer, dwfilesize, &dwreadsize, null))

lpbuffer[dwreadsize] = '\0';

dword dwfontnumber = 0;

m_hfont = addfontmemresourceex(lpbuffer, dwreadsize, 0, &dwfontnumber);

if ( m_hfont == null )

return true;

}

使用時,先把字型檔案(這裡是「droidsansfallback.ttf「)放到自己指定的目錄(這裡是程式資料夾中的font資料夾),然後在_twinmain函式中,宣告乙個caddmemfont變數。然後呼叫addfont方法就可以了(需要注意的就是,應該在窗體建立之前就呼叫這個方法,因為窗體的建立過程中就會去解析xml並且建立字型物件,如果在窗體建立之後再呼叫,就已經遲了)

[cpp]view plain

copy

print

?caddmemfont font;  

if (!font.addfont(_t(「font\\droidsansfallback.ttf」)))  

caddmemfont font;

if (!font.addfont(_t("font\\droidsansfallback.ttf")))

這時就可以直接在編寫xml檔案時使用這個字型了,效果如下:

Latex 使用windows自帶字型

documentclass 12pt,a4 usepackage usepackage usepackage top 1in,bottom 1in,left 1.25in,right 1.25in titleformat xetexlinebreaklocale zh xetexlinebreaks...

怎樣讓瀏覽器載入系統不自帶的字型

有時候我們需要瀏覽器載入一些自行設計的字型,這些字型在電腦的系統中是不存在的,而且是不被瀏覽器所支援的,如果我們需要使用這種字型就需要我們將字型做成各個瀏覽器都能支援的格式,一般來說我們需要設定四種格式。這個主要應用到css3的 font face,ie4就開始支援 font face屬性。一 tu...

讓使用者使用我設計的網頁字型

在客戶計算機上顯示特殊字型 weft 由微軟提供的網頁嵌入字型工具 weft 你自創字型後,weft會生成載入字型檔案 eot 然後把eot上傳到伺服器。weft支援ie4.0及以上版本。這樣,當用一台沒有安裝hfont字型的pc訪問網頁時,其中的字型也能原樣顯示了。btw bitstream公司也...