FreeType 庫解讀 TrueType hinting 代碼涉及 Apple 專利。在 Windows 平台,若已安裝對應字型,只需將多位元組字串轉為 Unicode (WideChar) 呼叫 TextOutW 即可正確繪製中文,無須自行解析字型檔。
BOOL bResult = m_Font.CreateFont(-16, 0, 0, 0, 400, 0, 0, 0,
134, 3, 2, 1, 50, "SimSun"); // GB2312 字集
char *pText = "Test漢字顯示測試Test";
wchar_t wBuffer[256];
int nLength = MultiByteToWideChar(936, MB_PRECOMPOSED, pText, -1, wBuffer, 256);
// 936 = GB2312 代碼頁
CDC *pDC = GetDC();
CFont *pFontTemp = (CFont *)pDC->SelectObject(&m_Font);
TextOutW(pDC->m_hDC, 80, 80, wBuffer, nLength - 1); // 必須用 TextOutW 而非 DC.TextOut
pDC->SelectObject(pFontTemp);
ReleaseDC(pDC);
cp_936.nls) 並註冊表設定:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage\936 = "cp_936.nls" HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Locale\00000804 = "Chinese(PRC)"
MultiByteToWideChar / TextOutW。TextOutW (而非 CDC::TextOut),並傳入 HDC。CP_ACP 或明確指定 936 均可,視系統預設代碼頁而定。CharSet = 134 (GB2312),OutPrecision = 3, ClipPrecision = 2, Quality = 1, PitchAndFamily = 50。