我正在使用 iTextSharp 生成一系列 PDF,使用 Open Sans 作为默认字体。有时,姓名会插入 PDF 的内容中。然而我的问题是,我需要插入的一些名称包含 CJK 字符(存储在 SQL Server 中的 nvarchar 列中),并且据我所知 Open Sans 目前不支持 CJK 字符。我需要继续使用 Open Sans 作为默认字体,因此理想情况下,我想尝试检测从数据库抓取的字符串中的 CJK 字符,并在打印这些字符时切换到 CJK 字体。
正则表达式是最好的选择吗?不幸的是,我无法找到任何有助于解决此问题的正则表达式模式。
预先感谢您的任何帮助!
为了防止有人偶然发现这个问题,我找到了另一个使用此处列出的 unicode 块的解决方案(http://msdn.microsoft.com/en-us/library/20bw873z.aspx#SupportedNamedBlocks)在正则表达式中。
var Name = "Joe Bloggs";
var Regex = new Regex(@"\p{IsCJKUnifiedIdeographs}");
if(Regex.IsMatch(Name))
{
//switch to CJK font
}
else
{
//keep calm and carry on
}
EDIT:
您可能需要匹配的不仅仅是统一表意文字,请尝试使用它作为正则表达式:
string r =
@"\p{IsHangulJamo}|"+
@"\p{IsCJKRadicalsSupplement}|"+
@"\p{IsCJKSymbolsandPunctuation}|"+
@"\p{IsEnclosedCJKLettersandMonths}|"+
@"\p{IsCJKCompatibility}|"+
@"\p{IsCJKUnifiedIdeographsExtensionA}|"+
@"\p{IsCJKUnifiedIdeographs}|"+
@"\p{IsHangulSyllables}|"+
@"\p{IsCJKCompatibilityForms}";
这适用于我尝试过的所有韩文文本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)