Esquema, versiones y estrategias de localización de tipos de perfiles comunes del Sistema de colores de Windows

Esquema de tipos de perfil comunes de WCS V1

A continuación se proporciona la definición de esquema v1.0 para los tipos de perfil comunes de WCS.

<?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>

Solo se admiten codificaciones UTF-8 o UTF-16. Se desaconseja encarecidamente todas las demás codificaciones XML con el fin de conservar la interoperabilidad óptima.

Adiciones de esquema de tipos de perfil comunes de WCS V2

En Windows 7, el esquema de tipos de perfil comunes de WCS se ha actualizado para incluir tipos para admitir el esquema de calibración de 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>

Control de versiones del esquema de perfil de WCS

En este Apéndice, el término "consumidor de perfiles" hace referencia al software WCS o a un componente de software de terceros que consume perfiles wcS.

Las versiones más recientes de los consumidores de perfiles podrán consumir perfiles WCS escritos según las versiones anteriores de los esquemas. Para aprovechar al máximo las características definidas en la versión más reciente de los esquemas, generalmente se necesitará la versión más reciente de un consumidor de perfiles. Sin embargo, los consumidores de perfiles más antiguos pueden consumir perfiles escritos según las versiones más recientes de los esquemas. El consumidor de perfiles puede omitir los elementos XML y los atributos que no entiende. Los resultados serán correctos, pero el rendimiento o la fidelidad se pueden degradar en comparación con los resultados obtenidos con la versión más reciente del consumidor del perfil.

A continuación se indican las directrices de control de versiones para los consumidores de perfiles:

  • Una versión determinada de un consumidor de perfiles debe reconocer todos los elementos y atributos de un espacio de nombres de versión o ninguno de ellos.
  • Si un consumidor de perfil encuentra un elemento o atributo de un espacio de nombres que no entiende, debe tratarlo como una condición de error, a menos que el perfil contenga instrucciones explícitas sobre el procesamiento de reserva.
  • La especificación de empaquetado abierto define un URI de espacio de nombres adicional, el espacio de nombres de compatibilidad de marcado, que define elementos y atributos que proporcionan esta guía de procesamiento de reserva.
  • Todas las versiones de todos los consumidores de perfiles deben reconocer y respetar todos los elementos y atributos del espacio de nombres de compatibilidad de marcado.
  • Los consumidores de perfiles basados en una nueva versión de los esquemas de perfil deben admitir todos los espacios de nombres de versión definidos previamente.

En la versión v1.0, WCS reconoce elementos y atributos de los siguientes espacios de nombres:

  • 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

A continuación se muestra un ejemplo de compatibilidad de marcado.

<?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>

Localización de perfiles de WCS

Requisitos

Los perfiles de WCS contienen determinados elementos, como ProfileName y Description, que contienen texto legible por el usuario. Este texto es localizable.

A continuación se indican las directrices de control de versiones para los creadores de perfiles:

  • En el caso de los perfiles creados por terceros como fabricantes de impresoras, el autor del perfil debe incorporar texto descriptivo en varios idiomas.

  • Los siguientes elementos deben ser localizables:

    Elemento CDMP GMMP CAMP
    ProfileName x x x
    Descripción x x x
    Autor x x x

     

Expresar elementos localizables

En lugar de contener texto directamente, cada elemento localizable contiene uno o varios sub elementos wcs:Text, cada uno de los cuales debe especificar el atributo xml:lang. Como se describe en la sección 2.12 de la especificación XML ("Identificación del idioma"), el valor del atributo xml:lang debe ser un identificador de idioma RFC 3066 de IETF, como "en-US", "en" o "fr-FR". En los esquemas WCS, el valor del atributo xml:lang no debe ser la cadena vacía "", aunque XML lo permita en el caso general. Por ejemplo:

<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>

No puede haber dos elementos wcs:Text con el mismo atributo xml:lang. Cada esquema de perfil de WCS debe aplicar esta restricción por separado para cada elemento localizable. Solo se admiten las codificaciones UTF-8 y UTF-16.

Compatibilidad con esquemas

El diseño usa los tipos XSD wcs:LocalizedText y wcs:MultiLocalizedType definidos en el esquema de tipo de perfil común de WCS:

    <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>

Cada esquema de perfil de WCS declara que cada elemento localizable es de tipo MultiLocalizedType, por ejemplo:

<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>

El esquema CDMP aplica la restricción que cada elemento secundario wcs:Text del elemento cdm:Description debe tener un atributo xml:lang único. Aplica la misma restricción para los demás elementos localizables. Los esquemas CAMP y GMMP hacen lo mismo.

Selección del idioma

Al decidir qué versión de idioma de un elemento localizable se va a mostrar, el código de la aplicación debe seleccionar la "versión más cercana" al "idioma actual". Lo que significa "versión más cercana" y "idioma actual" es realmente dependiente de la plataforma; consulte a continuación. Si el perfil no contiene una versión de idioma que coincida con el idioma actual, la aplicación debe seleccionar la primera versión del perfil (el primer elemento secundario wcs:Text del elemento localizable).

En Windows Vista, la selección de idioma se realiza de la siguiente manera: cada subproceso tiene una lista asociada de "idiomas preferidos de la interfaz de usuario", que se puede obtener llamando a GetThreadPreferredUILanguages. La lista se devuelve en orden de preferencia del usuario. Por ejemplo, en un sistema configurado para inglés de EE. UU., la lista devuelta por GetThreadPreferredUILanguages es { "en-US", "en" }. Esto significa: 1) Inglés de EE. UU. si está presente. 2) De lo contrario, use cualquier variante regional del inglés, como "en-GB" o simplemente simple "en".

Para cada idioma de esa lista, en orden de lista, el código de la interfaz de usuario busca un elemento wcs:Text cuyo atributo xml:lang es una coincidencia exacta. Se usa la primera versión coincidente. Si no coincide ninguna versión, se usa el primer elemento wcs:Text.

Perfiles integrados

Los perfiles WCS estándar que se incluyen con Windows Vista, como sRGB.cdmp, tienen las mismas propiedades localizables que otros perfiles.

La solución estándar de Windows sería colocar las cadenas localizadas en un archivo DLL MUI y hacer referencia a ellas de esta manera:

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

En un sistema Windows, el texto de descripción se extraería del identificador de recurso 101 en la versión localizada adecuada de los recursos MUI para mscms.dll. Los sistemas que no son de Windows usarían los subelementos wcs:Text como se ha descrito anteriormente.

Presentamos un atributo id. único global opcional en el elemento raíz de cada esquema de perfil de WCS. El perfil estándar wcsRGB.cdmp podría tener este aspecto:

<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>

Para los perfiles de color wcS enviados con ventanas, la CPL de color muestra información descriptiva de los recursos, en lugar de los elementos wcs:Text de los perfiles. Esto permite a Windows mostrar información localizada para estos perfiles en todos los idiomas admitidos, sin necesidad de que los perfiles contengan información descriptiva en todos los idiomas.

Conceptos básicos de administración de colores

Algoritmos y esquemas del Sistema de colores de Windows