function ResolvePdfUaEffectiveLanguage(const CatalogLanguage: WString;
const Elements: TPdfStructureElements; ElementIndex: Integer;
const MarkedContentLanguage: WString; HasMarkedContentLanguage: Boolean;
out Resolution: TPdfUaLanguageResolution): Boolean;
| CatalogLanguage | WString |
| Elements | TPdfStructureElements |
| ElementIndex | Integer |
| MarkedContentLanguage | WString |
| HasMarkedContentLanguage | Boolean |
| Resolution | TPdfUaLanguageResolution |
BooleanResolvePdfUaEffectiveLanguage 对一个内容位置应用 ISO 14289 语言级联,并把胜出的声明填入 Resolution
当 HasMarkedContentLanguage 为 True 时,标记内容 /Lang 值胜出,Resolution.Source 为 pulsMarkedContent
否则会沿 ParentIndex 遍历 ElementIndex 处的元素及其祖先,直到某个元素带有非空的 Language;此时 Resolution.Source 为 pulsStructure,StructureElementIndex 记录声明该语言的元素
当没有任何结构元素声明语言时,非空的 CatalogLanguage 生效,Source 为 pulsCatalog
每个候选项都会用 IsPdfUaLanguageTagValid 校验,结果存储在 Resolution.DeclarationValid 中
函数返回 Resolution.IsCovered,只有当找到声明且它是格式良好的标记时才为 True
当不存在任何候选项时,Resolution 保持 Source 为 pulsNone 且 Language 为空,结果为 False
Covered := ResolvePdfUaEffectiveLanguage(Pdf.Language, Elements, I, '', False, Resolution);