Share via


Windows カラー システムの一般的なプロファイルの種類のスキーマ、バージョン管理、およびローカリゼーションの戦略

WCS 共通プロファイルの種類スキーマ V1

WCS 共通プロファイルタイプの v1.0 スキーマ定義を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:wcs="http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes"
  targetNamespace="http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  blockDefault="#all"
  version="1.0">

  <xs:import namespace="http://www.w3.org/XML/1998/namespace" />

  <xs:annotation>
    <xs:documentation xml:lang="en">
      Common types used in WCS profile schemas.
      Copyright (C) Microsoft. All rights reserved.
    </xs:documentation>
  </xs:annotation>

  <xs:simpleType name="NonNegativeFloatType">
    <xs:restriction base="xs:float">
      <xs:minInclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="NonNegativeCIEXYZType">
    <xs:attribute name="X" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="Y" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="Z" type="wcs:NonNegativeFloatType" use="required"/>
  </xs:complexType>

  <xs:simpleType name="GUIDType">
    <xs:restriction base="xs:string">
      <xs:pattern value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="LocalizedTextType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute ref="xml:lang" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="MultiLocalizedTextType">
    <xs:sequence>
      <xs:element name="Text" type="wcs:LocalizedTextType" minOccurs="1" />
    </xs:sequence>
  </xs:complexType>

</xs:schema>

UTF-8 または UTF-16 エンコードのみがサポートされています。 他のすべての XML エンコードは、最適な相互運用性を維持するために推奨されません。

WCS 共通プロファイルの種類スキーマ V2 の追加

Windows 7 では、WCS 共通プロファイルの種類スキーマが更新され、 WCS 調整スキーマをサポートする型が含まれています。

  <xs:complexType name="ParameterizedCurvesType">
    <xs:sequence>
      <xs:element name="RedTRC" type="wcs:ParameterizedCurveType"/>
      <xs:element name="GreenTRC" type="wcs:ParameterizedCurveType"/>
      <xs:element name="BlueTRC" type="wcs:ParameterizedCurveType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ParameterizedCurveType">
    <xs:attribute name="Gamma" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="Offset1" type="xs:float" use="optional"/>
    <xs:attribute name="Gain" type="wcs:NonNegativeFloatType" use="optional"/>
    <xs:attribute name="Offset2" type="xs:float " use="optional"/>
    <xs:attribute name="TransitionPoint" type="wcs:NonNegativeFloatType" use="optional"/>
    <xs:attribute name="Offset3" type="xs:float" use="optional"/>
  </xs:complexType>

  <xs:simpleType name="FloatList">
    <xs:list itemType="xs:float"/>
  </xs:simpleType>

  <xs:complexType name="OneDimensionLutType">
    <xs:sequence>
      <xs:element name="Input" type="wcs:FloatList"/>
      <xs:element name="Output" type="wcs:FloatList"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="HDRToneResponseCurvesType">
    <xs:sequence>
      <xs:element name="RedTRC" type="wcs:OneDimensionLutType"/>
      <xs:element name="GreenTRC" type="wcs:OneDimensionLutType"/>
      <xs:element name="BlueTRC" type="wcs:OneDimensionLutType"/>
    </xs:sequence>
    <xs:attribute name="TRCLength" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:int">
          <xs:minInclusive value="2" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

WCS プロファイル スキーマのバージョン管理

この付録では、"プロファイル コンシューマー" という用語は、WCS ソフトウェア、または WCS プロファイルを使用するサードパーティ製ソフトウェア コンポーネントを指します。

新しいバージョンのプロファイル コンシューマーは、以前のバージョンのスキーマに従って作成された WCS プロファイルを使用できます。 スキーマの最新バージョンで定義されている機能を最大限に活用するには、通常、プロファイル コンシューマーの最新バージョンが必要です。 ただし、古いプロファイル コンシューマーは、新しいバージョンのスキーマに従って作成されたプロファイルを使用できます。 プロファイル コンシューマーは、認識できない XML 要素と属性を無視できます。 結果は正しいが、プロファイル コンシューマーの最新バージョンで達成された結果と比較すると、パフォーマンスまたは忠実度が低下する可能性があります。

プロファイル コンシューマーのバージョン管理ガイドラインを次に示します。

  • プロファイル コンシューマーの特定のバージョンでは、バージョン名前空間のすべての要素と属性を認識するか、いずれも認識しない必要があります。
  • プロファイル コンシューマーが、認識できない名前空間の要素または属性を検出した場合、プロファイルにフォールバック処理に関する明示的なガイダンスが含まれていない限り、これをエラー条件として扱う必要があります。
  • Open Packaging Specification では、このフォールバック処理ガイダンスを提供する要素と属性を定義する追加の名前空間 URI、マークアップ互換性名前空間が定義されています。
  • すべてのプロファイル コンシューマーのすべてのバージョンは、マークアップ互換性名前空間内のすべての要素と属性を認識し、尊重する必要があります。
  • プロファイル スキーマの新しいバージョンに基づくプロファイル コンシューマーは、以前に定義されたすべてのバージョンの名前空間をサポートする必要があります。

v1.0 リリースでは、WCS は次の名前空間の要素と属性を認識します。

  • https://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel
  • https://schemas.microsoft.com/windows/2005/02/color/GamutMapModel
  • https://schemas.microsoft.com/windows/2005/02/color/ColorAppearanceModel
  • https://schemas.microsoft.com/winfx/2005/06/markup-compatibility

マークアップの互換性の例を次に示します。

<?xml version="1.0" encoding="utf-8" ?>
<ColorAppearanceModel
  xmlns=http://schemas.microsoft.com/windows/2005/02/color/ColorAppearanceModel
  xmlns:cam2=http://schemas.microsoft.com/windows/2007/08/color/ColorAppearanceModel
  xmlns:mc=http://schemas.microsoft.com/winfx/2005/02/markup-compatibility
  xs:schemaLocation="http://schemas.microsoft.com/windows/2005/02/color/ColorAppearanceModel ColorAppearanceModel.xsd"
  xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
  mc:Ignorable="cam2">

  <ProfileName>Default profile for ICC viewing conditions</ProfileName>
  <mc:AlternateContent>
    <mc:Choice Requires="cam2">
      <cam2:AudioDescription source="ProfileExplanation.wav"/>
    </mc:Choice>
    <mc:Fallback>
      <Description>Appropriate for a print in a D50 viewing booth</Description>
        </mc:Fallback>
  </mc:AlternateContent>
  <Author>Microsoft</Author>

  <ViewingConditions>
    <WhitePointName>D50</WhitePointName>
    <Background X="19.3" Y="20.0" Z="16.5" />
    <Surround>Average</Surround>
    <LuminanceOfAdaptingField>31.8</LuminanceOfAdaptingField>
    <DegreeOfAdaptation>-1</DegreeOfAdaptation>
    <cam2:Humidity>30%</cam2:Humidity>
  </ViewingConditions>

</ColorAppearanceModel>

WCS プロファイルのローカライズ

必要条件

WCS プロファイルには、人間が判読できるテキストを含む ProfileName や Description などの特定の要素が含まれています。 このテキストはローカライズ可能です。

プロファイル作成者のバージョン管理ガイドラインを次に示します。

  • プリンターの製造元などのサード パーティによって作成されたプロファイルの場合、プロファイル作成者は複数の言語で説明テキストを組み込む必要があります。

  • 次の要素はローカライズ可能である必要があります。

    要素 CDMP GMMP CAMP
    ProfileName x x x
    説明 x x x
    Author x x x

     

ローカライズ可能な要素の表現

各ローカライズ可能な要素には、テキストを直接含む代わりに、1 つ以上の wcs:Text サブ要素が含まれます。各要素には xml:lang 属性を指定する必要があります。 「XML 仕様」セクション 2.12 (「言語識別」) で説明されているように、xml:lang 属性の値は、"en-US"、"en"、"fr-FR" などの IETF RFC 3066 言語識別子である必要があります。 WCS スキーマでは、xml:lang 属性の値を空の文字列 "" にすることはできません。ただし、XML では一般的なケースでこれを許可します。 次に例を示します。

<cdm:ColorDeviceModel ... />
    <cdm:Description>
        <wcs:Text xml:lang="en-US">Hello</wcs:Text>
        <wcs:Text xml:lang="fr-FR">Bonjour</wcs:Text>
    </cdm:Description>
    ...
</cdm:ColorDeviceeModel>

同じ xml:lang 属性を持つ 2 つの wcs:Text 要素はありません。 WCS プロファイル スキーマごとに、ローカライズ可能な要素ごとにこの制約を個別に適用する必要があります。 サポートされているのは UTF-8 エンコードと UTF-16 エンコードだけです。

スキーマのサポート

デザインでは、WCS 共通プロファイルの種類スキーマで定義されている XSD 型 wcs:LocalizedText と wcs:MultiLocalizedType を使用します。

    <xs:complexType name="LocalizedText">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="xml:lang" type="xs:string" use="required"/>
            <xs:extension/>
        <xs:simpleContent/>
    </xs:complexType/>

    <xs:complexType name="MultiLocalizedType">
        <xs:element name="Text" type="cam:LocalizedText" minOccurs="1"/>
    </xs:complexType>

各 WCS プロファイル スキーマでは、ローカライズ可能な各要素が MultiLocalizedType 型として宣言されます。次に例を示します。

<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:cdm="http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"
    xmlns:wcs="http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes"
    targetNamespace=
        "http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"
    version="1.0">
    <xs:import namespace=
        "http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes"/>

    <xs:element name="cdm:Description" type="wcs:MultiLocalizableType" minOccurs="0"/>

    <xs:unique name="uniqueDescriptionLanguage">
      <xs:selector xpath="cdm:ColorDeviceModel/cdm:Description/wcs:Text"/>
      <xs:field xpath="@xml:lang"/>
    </unique>

    ...
</xs:schema>

CDMP スキーマでは、cdm:Description 要素の各 wcs:Text 子に一意の xml:lang 属性が必要であるという制約が適用されます。 他のローカライズ可能な要素にも同じ制約が適用されます。 CAMP スキーマと GMMP スキーマも同じです。

言語の選択

表示するローカライズ可能な要素の言語バージョンを決定するときは、アプリケーション コードで "現在の言語に最も近いバージョン" を選択する必要があります。 "最も近いバージョン" と "現在の言語" の意味は、プラットフォームに依存します。以下を参照してください。 プロファイルに現在の言語と一致する言語バージョンが含まれていない場合、アプリケーションはプロファイルの最初のバージョン (ローカライズ可能な要素の最初の wcs:Text 子要素) を選択する必要があります。

Windows Vista では、言語の選択は次のように行われます。各スレッドには、 GetThreadPreferredUILanguages を呼び出すことで取得できる "優先 UI 言語" の一覧が関連付けられています。 リストは、ユーザー設定の順序で返されます。 たとえば、米国英語用に設定されたシステムでは、 GetThreadPreferredUILanguages によって返されるリストは { "en-US"、"en" }です。 これは、1) 米国英語 (存在する場合) を意味します。 2) それ以外の場合は、"en-GB" や単なる "en" など、英語の地域バリアントを使用します。

そのリスト内の言語ごとに、リスト順に、XML:lang 属性が完全に一致する wcs:Text 要素が UI コードによって検索されます。 最初に一致するバージョンが使用されます。 一致するバージョンがない場合は、最初の wcs:Text 要素が使用されます。

組み込みのプロファイル

Windows Vista に付属する標準の WCS プロファイル (sRGB.cdmp など) には、他のプロファイルと同じローカライズ可能なプロパティがあります。

標準的な Windows ソリューションでは、ローカライズされた文字列を MUI DLL に配置し、次のように参照します。

<cdm:Description resourceId="mscms.dll,-101">
    <wcs:Text xml:lang="en-US">Hello, world!</wcs:Text>
<cdm:Description>

Windows システムでは、説明テキストは、リソース ID 101 から、mscms.dllの MUI リソースのローカライズされた適切なバージョンで抽出されます。 Windows 以外のシステムでは、前述のように wcs:Text サブ要素が使用されます。

各 WCS プロファイル スキーマのルート要素には、省略可能なグローバルに一意の ID 属性が導入されています。 標準プロファイル wcsRGB.cdmp は次のようになります。

<cdm:ColorDeviceModel
    ID=http://schemas.microsoft.com/2005/02/color/profiles/wcsRGB.cdmp
    ... >
    <cdm:Description>
        <wcs:Text xml:lang="en-US">Hello.</wcs:Text>
        <wcs:Text xml:lang="fr-FR">Bonjour.</wcs:Text>
    </cdm:Description>
    ...
</cdm:ColorDeviceModel>

ウィンドウに付属する WCS カラー プロファイルの場合、Color CPL には、プロファイル内の wcs:Text 要素ではなく、リソースからの説明情報が表示されます。 これにより、Windows では、サポートされているすべての言語でこれらのプロファイルのローカライズされた情報を表示できます。すべての言語で説明情報をプロファイルに含める必要はありません。

基本的な色管理の概念

Windows カラー システムのスキーマとアルゴリズム