OpenXML ComplexScript 字体不呈现
OpenXML ComplexScript font not rendering
我有以下生成示例 word 文档的程序:
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
namespace OpenXmlExample
{
class Program
{
static void Main(string[] args)
{
string filePath = @"C:\Users\[Redacted]\Desktop\OpenXmlExample.docx";
using (WordprocessingDocument document = WordprocessingDocument.Create(filePath, WordprocessingDocumentType.Document))
{
// Create main part and body of document
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document = new Document();
Body body = mainPart.Document.AppendChild(new Body());
// Prototype code for generation of the document title
Paragraph paragraph = new Paragraph();
ParagraphProperties pPr = new ParagraphProperties
{
Justification = new Justification { Val = JustificationValues.Center }
};
RunProperties rPr = new RunProperties
{
RunFonts = new RunFonts { ComplexScript = new StringValue("Arial") },
Bold = new Bold { Val = true },
Caps = new Caps { Val = true },
FontSize = new FontSize { Val = "32" },
FontSizeComplexScript = new FontSizeComplexScript { Val = "36" }
};
Text t = new Text("Example Document");
Run r = new Run();
r.Append((OpenXmlElement) rPr.Clone());
r.Append(t);
pPr.Append((OpenXmlElement) rPr.Clone());
paragraph.Append(pPr);
paragraph.Append(r);
body.Append(paragraph);
}
}
}
}
它似乎运行良好。 "EXAMPLE DOCUMENT" 呈现正确,粗体和大写,16pt 字体。但是,ComplexScript = new StringValue("Arial")
部分似乎不起作用。文本只是以默认字体呈现。如果我做错了什么,谁能帮助我理解?如果我将 Ascii
属性 设置为 Arial 似乎可行,但我希望它生成为 <w:rFonts w:cs="Arial"/>
标记。
对于单个运行,可以配置4种不同的字体。
每种字体的使用应由 运行 内容的 Unicode 字符值决定。
ASCII 用于 Unicode 范围 (U+0000-U+007F) 中的字符。
复杂脚本 用于复杂脚本 Unicode 范围内的字符,例如。阿拉伯文字。
东亚 用于东亚 Unicode 范围内的字符,例如。日语.
高 ANSI 用于不属于其他类别之一的 Unicode 范围内的字符。
'EXAMPLE DOCUMENT'中的字符都属于 ASCII 组,因此将应用相应组的字体。
更多详情请见 MSDN and Office Open XML。
我有以下生成示例 word 文档的程序:
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
namespace OpenXmlExample
{
class Program
{
static void Main(string[] args)
{
string filePath = @"C:\Users\[Redacted]\Desktop\OpenXmlExample.docx";
using (WordprocessingDocument document = WordprocessingDocument.Create(filePath, WordprocessingDocumentType.Document))
{
// Create main part and body of document
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document = new Document();
Body body = mainPart.Document.AppendChild(new Body());
// Prototype code for generation of the document title
Paragraph paragraph = new Paragraph();
ParagraphProperties pPr = new ParagraphProperties
{
Justification = new Justification { Val = JustificationValues.Center }
};
RunProperties rPr = new RunProperties
{
RunFonts = new RunFonts { ComplexScript = new StringValue("Arial") },
Bold = new Bold { Val = true },
Caps = new Caps { Val = true },
FontSize = new FontSize { Val = "32" },
FontSizeComplexScript = new FontSizeComplexScript { Val = "36" }
};
Text t = new Text("Example Document");
Run r = new Run();
r.Append((OpenXmlElement) rPr.Clone());
r.Append(t);
pPr.Append((OpenXmlElement) rPr.Clone());
paragraph.Append(pPr);
paragraph.Append(r);
body.Append(paragraph);
}
}
}
}
它似乎运行良好。 "EXAMPLE DOCUMENT" 呈现正确,粗体和大写,16pt 字体。但是,ComplexScript = new StringValue("Arial")
部分似乎不起作用。文本只是以默认字体呈现。如果我做错了什么,谁能帮助我理解?如果我将 Ascii
属性 设置为 Arial 似乎可行,但我希望它生成为 <w:rFonts w:cs="Arial"/>
标记。
对于单个运行,可以配置4种不同的字体。
每种字体的使用应由 运行 内容的 Unicode 字符值决定。
ASCII 用于 Unicode 范围 (U+0000-U+007F) 中的字符。
复杂脚本 用于复杂脚本 Unicode 范围内的字符,例如。阿拉伯文字。
东亚 用于东亚 Unicode 范围内的字符,例如。日语.
高 ANSI 用于不属于其他类别之一的 Unicode 范围内的字符。
'EXAMPLE DOCUMENT'中的字符都属于 ASCII 组,因此将应用相应组的字体。
更多详情请见 MSDN and Office Open XML。