gpt4 book ai didi

windows - 如何获得完整的 unicode 支持,包括 VCL 控件中的中文字符或 XP 上的 Windows 通用控件,就像在 Win7 中一样

转载 作者:可可西里 更新时间:2023-11-01 14:46:29 25 4
gpt4 key购买 nike

我有一个应用程序,我一直在测试国际化支持。

例如,有一个标准的 TEdit 控件,其 font.Name = 'Arial'。

在 Windows 7 上,如果分配给该控件的字体不包含某个国际字符,它似乎会自动从 Arial Unicode MS 或其他地方获取 CJK 字符的字形,用于 EDIT 通用控件。

在 Windows XP 上,似乎中文字符显示为框,即使安装了 Arial Unicode MS 字体,除非我将 delphi 窗体中的字体名称更改为 Arial Unicode MS。

Windows XP 上的国际字体支持是每个人都会遇到的问题吗? Windows 常用控件的行为是否不同?我在 Windows 7 上看到的行为肯定比我在 Windows XP 上看到的行为更友好。

这种行为差异不仅仅局限于 Windows 公共(public)控件。它似乎甚至 Internet Explorer 和 MS Explorer shell 在执行如下图所示的测试时也会出现问题: enter image description here

  1. 人们对此做了什么?

  2. 在 Windows XP 上预期的平台行为是什么?您是否必须去寻找用户想要使用的语言,然后去寻找一种支持该语言的字体供他们使用?我想 Arial Unicode MS 可能是一个不错的默认设置,因为它几乎包含所有可用的 unicode 语言。

更新:Microsoft 术语“补充语言支持”似乎指的是 Windows 的“windows 不将我的 unicode 字符显示为框”功能。

最佳答案

Vista 和 Windows 7 包括开箱即用的东亚语言支持。要在 Windows XP 上启用它,请进入控制面板,打开区域和语言选项对话框,切换到语言选项卡,然后选中为东亚语言安装文件补充语言支持 下。

您可以使用 IsValidLanguageGroup 检测它们是否已安装通过使用 LGRIP_INSTALLED 标志检查其中一种相关语言:

uses
Windows;

type
LGRPID = DWORD;

const
LGRPID_INSTALLED = $00000001; // installed language group ids
LGRPID_SUPPORTED = $00000002; // supported language group ids

LGRPID_WESTERN_EUROPE = $0001; // Western Europe & U.S.
LGRPID_CENTRAL_EUROPE = $0002; // Central Europe
LGRPID_BALTIC = $0003; // Baltic
LGRPID_GREEK = $0004; // Greek
LGRPID_CYRILLIC = $0005; // Cyrillic
LGRPID_TURKISH = $0006; // Turkish
LGRPID_JAPANESE = $0007; // Japanese
LGRPID_KOREAN = $0008; // Korean
LGRPID_TRADITIONAL_CHINESE = $0009; // Traditional Chinese
LGRPID_SIMPLIFIED_CHINESE = $000a; // Simplified Chinese
LGRPID_THAI = $000b; // Thai
LGRPID_HEBREW = $000c; // Hebrew
LGRPID_ARABIC = $000d; // Arabic
LGRPID_VIETNAMESE = $000e; // Vietnamese
LGRPID_INDIC = $000f; // Indic
LGRPID_GEORGIAN = $0010; // Georgian
LGRPID_ARMENIAN = $0011; // Armenian

function IsValidLanguageGroup(LanguageGroup: LGRPID; dwFlags: DWORD): BOOL; stdcall;
external kernel32;

function IsCJKInstalled: Boolean;
begin
Result := IsValidLanguageGroup(LGRPID_SIMPLIFIED_CHINESE, LGRPID_INSTALLED);
end;

关于windows - 如何获得完整的 unicode 支持,包括 VCL 控件中的中文字符或 XP 上的 Windows 通用控件,就像在 Win7 中一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5395742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com