Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esse tópico descreve o VML, um recurso que foi preterido a partir do Windows Internet Explorer 9. Páginas da Web e aplicativos que dependem do VML devem ser migrados para o SVG ou para outros padrões amplamente compatíveis.
Observação
Esse tópico foi arquivado desde dezembro de 2011. Como resultado, ele não é mais mantido ativamente. Para obter mais informações, consulte Conteúdo Arquivado. Para obter informações, recomendações e diretrizes sobre a versão atual do Windows Internet Explorer, consulte o Centro de Desenvolvedores do Internet Explorer.
Contents
Introdução
Essa proposta usa um número pequeno de tipos básicos, listados na tabela abaixo.
| Tipo | Element | Representação Fundamental | Descrição |
|---|---|---|---|
| booleano | 1 bit | Um valor booliano: true ou false. | |
| fração | número 2 6 | Um valor numérico, escalado em 2 6 (65536) e armazenado como um inteiro com sinal. | |
| ordenada | Sinal de mais inteiro de 30 bits | Parte de uma coordenada (por exemplo, em um caminho), os valores definidos por coord. | |
| length | EMU | Um comprimento físico, como a largura de uma linha ou o tamanho de uma fonte. | |
| medida | EMU ou número 2 6 | Um comprimento físico, incluindo vários pixels de dispositivo ou uma fração de alguma outra quantidade. | |
| ângulo | 2 6 graus | Um ângulo; positivo é no sentido horário. | |
| color | c | complex | Um elemento que permite que uma cor seja derivada. |
| font | font | complex | Uma descrição de uma fonte. |
| bitmap | bitmap | href | Uma referência a um arquivo de imagem externo. |
| vector | v | complex | Uma descrição de um caminho de vetor |
A "representação fundamental" é a representação de precisão mais alta que a proposta requer que uma implementação em conformidade mantenha. Os dados serão perdidos se a implementação não puder representar os dados para a obter precisão necessária. Os tipos de cor, fonte e vetor correspondem a elementos que têm estrutura – em certo sentido, eles não são tipos básicos; no entanto, é conveniente tratá-los como tal dentro dessa proposta.
Cada tipo básico não complexo tem um elemento associado de mesmo nome. Esses nomes de elemento são reservados e podem não ser usados para qualquer outra finalidade dentro de extensões, mesmo que o uso esteja dentro de um elemento de extensão onview="skip". Por isso, é possível que uma implementação que encontre XML desconhecido forneça um armazenamento interno eficiente do XML desconhecido, desde que os valores sejam colocados nos elementos de "tipo".
<new:tag>1.578</new:tag>
<new:tag><v:fraction>1.578</v:fraction></new:tag>
No primeiro exemplo acima, a cadeia de caracteres "1.578" deve ser armazenada como uma sequência de caracteres (a implementação não sabe se é uma cadeia de caracteres ou um número); no segundo exemplo, o elemento de fração indica que o conteúdo é um número, portanto, ele pode ser convertido para a representação de fração de alta precisão.
Tipos complexos (incluindo bitmap) têm nomes de elemento associados que são usados para delimitar o valor. Isso simplifica a análise garantindo que as tarefas de análise mais complexas sejam associadas a marcas de elementos exclusivas.
boolean
boolean
<!entity % boolean "#pcdata" -- or nmtoken in an attribute -- >
Um valor booliano é representado como uma palavra-chave que indica o estado do sinalizador. As palavras-chave a seguir são definidas.
| Valor para true | Valor para false |
|---|---|
| true | false |
| sim | não |
| on | Desligar |
| t | f |
| 1 | 0 |
Uma implementação pode escrever qualquer valor e deve reconhecer todos os valores. Uma implementação é livre para alterar valores de uma representação para outra.
fração
fraction
<!entity % fraction "#pcdata" -- or nmtoken in an attribute -- >
Todos os valores numéricos (ou seja, valores de quantidades sem dimensão) nessa proposta podem ser armazenados como inteiros dimensionando-os em 2 6 (65536). Um número pode ser fornecido neste formulário, com o sufixo f ou como um número decimal sem sufixo. Assim, os seguintes elementos hipotéticos representam o mesmo valor.
<fillwidth>0.25</fillwidth>
<fillwidth>16384f</fillwidth>
Uma quantidade com o sufixo f deve ser um número inteiro; números fracionários não são permitidos. O inteiro resultante deve ser representável como um número com sinal de complemento de 2 bits de 32 bits; portanto, o intervalo efetivo da representação é 32768 (na verdade, menor que 32768 e maior ou igual a -32768.)
Uma implementação em conformidade é necessária para preservar valores expressos como valores f. Valores representados como números decimais podem ser convertidos em um valor f e armazenados dessa forma. Um aplicativo tem permissão para registrar valores gerados internamente em qualquer unidade apropriada; no entanto, um valor lido de um documento existente deve ser mantido para a precisão original completa ou deve ser convertido em um valor f.
Se a implementação não puder fazer isso, ela deverá avisar o usuário de que os dados podem ser perdidos. (É aceitável emitir esse aviso uma vez quando dados gerados externamente forem encontrados pela primeira vez.)
Quando um valor decimal é convertido em formato f, a implementação pode usar qualquer modo de arredondamento aritmético; no entanto, um número inteiro deve ser convertido exatamente no formato f. É recomendável que as implementações sejam convertidas arredondando para menos infinito e que a conversão seja sempre exata.
Ordenada
ordinate
<!entity % ordinate "#pcdata" -- or nmtoken in an attribute -- >
As unidades do sistema de coordenadas estabelecidas pelo coord são de algum tipo nominal, que é chamado de ordenação. Essa é uma medida de comprimento, mas é usada apenas em relação ao retângulo que o coord estabelece. Qualquer valor de ordenação de tipo será dimensionado pelos valores w e h do coord e pela taxa resultante usada para estabelecer uma medida real no dispositivo de saída.
Uma implementação em conformidade deve ser capaz de lidar com valores de ordenação de até 30 bits mais sinal (ou seja, um inteiro com sinal de 31 bits, não um inteiro com sinal de 32 bits). No entanto, é recomendável que as implementações tentem produzir coordenadas para o caminho e elementos semelhantes que têm cerca de 16 bits de precisão. Isso minimizará a chance de subfluxo ou estouro em uma implementação não em conformidade.
os valores de ordenação são sempre integrais. Um ponto decimal pode não aparecer em um valor de ordenação de tipo. Nenhum especificador de unidade pode ser acrescentado a valores de ordenação de tipos.
comprimento
length
<!entity % length "#pcdata" -- or nmtoken in an attribute -- >
Um comprimento é uma medida do mundo real ou, às vezes, uma medida em pixels de dispositivo. É recomendável que as implementações evitem o uso de pixels de dispositivo (px).
Todos os qualificadores de unidade CSS1padrão são permitidos em um comprimento. Além disso, a emu do qualificador pode ser usada. Este qualificador refere-se a uma unidade -- a EMU (Unidade de Métrica em Inglês) -- que é um denominador comum das quantidades de medida em uso generalizado em elementos gráficos de computação. A EMU é polegada /914400, ou seja, há 914400 EMU por polegada. A tabela a seguir lista o número de EMUs em um pequeno número de unidades comumente encontradas.
| Número de EMUs | Número por Polegada | Número por Milímetro | Descrição |
|---|---|---|---|
| 360 | 0,01 | Win32 HIMETRIC | |
| 12700 | 72 | "ponto" | |
| 635 | 1440 | Win32 TWIP | |
| 762 | 1200 | Impressora de alta resolução |
Números fracionários de EMUs não são permitidos. Qualquer medida deve ser representável como um número integral assinado de 32 bits de EMUs - isso limita a magnitude de uma medida a 2348 polegadas - cerca de 59 metros ou 65 jardas. Como as medidas sempre se referem ao tamanho de uma renderização em um dispositivo de saída nominal ou de tamanho de página, elas sempre estarão dentro desse intervalo.
Observe, no entanto, que a representação é inadequada para medidas do mundo real e que onde elas são registradas (por exemplo, para registrar o tamanho real de um caminho) alguma outra representação deve ser usada.
Uma implementação em conformidade é necessária para preservar valores que são números exatos de EMUs. Os valores representados de qualquer outra forma podem ser convertidos em um valor de EMU e armazenados dessa forma. Um aplicativo tem permissão para registrar valores gerados internamente em qualquer unidade apropriada; no entanto, um valor lido de um documento existente deve ser mantido para a precisão original completa ou deve ser convertido em um valor EMU.
Se a implementação não puder fazer isso, ela deverá avisar o usuário de que os dados podem ser perdidos. (É aceitável emitir esse aviso uma vez quando dados gerados externamente forem encontrados pela primeira vez.)
Na prática, os comprimentos físicos são usados para relativamente poucas medidas nessa proposta. Os dados que normalmente são mais importantes são os dados de caminho e eles são codificados no sistema de coordenadas definido, por forma, por coord.
Representações alternativas
As representações de comprimento padrão de HTML são definidas pelo CSS1 . Unidades relativas, com exceção do pixel, não são significativas no contexto no qual os comprimentos são usados nesta proposta e não devem ser usados. Se o documento registrar o tamanho de pixel pretendido (destino), isso definirá a conversão de pixels em EMU. Caso contrário, o padrão de 90 dpi definido pelo CSS1 deve ser usado.
Com exceção da emu, qualquer valor pode ser fornecido como uma fração decimal. Quando um valor decimal é convertido em EMU, a implementação pode usar qualquer modo de arredondamento aritmético. (A única maneira de um aplicativo de criação garantir um resultado específico é especificá-lo em emu.)
Se nenhum especificador de unidade for fornecido em um valor de comprimento, a implementação deverá assumir emu.
medida
measure
<!entity % measure "#pcdata" -- or nmtoken in an attribute -- >
Uma medida é uma quantidade que pode ser um comprimento ou uma fração. Isso se assemelha muito às medidas de comprimento HTML e CSS, que podem, em muitos casos, ser medidas físicas ou percentuais de alguma outra quantidade. Se nenhum especificador de unidade for fornecido, o valor deverá ser considerado uma fração decimal (portanto, esse comportamento é herdado de fração, não de comprimento.)
Ao contrário do comprimento, um valor de pixel tem um significado definido pelo contexto, portanto, a conversão em emu normalmente é inadequada. Há três representações fundamentais possíveis que a implementação deve manter (ou seja, uma representação não pode ser convertida em outra sem perda de informações).
- Um valor fracionário deve ser mantido no formato de fração (um valor "f").
- Um comprimento físico deve ser mantido na EMU.
- Um valor de pixel deve ser mantido como um número inteiro de pixels.
Números fracionários de pixels não são permitidos.
Representações alternativas
Todas as representações alternativas de fração e comprimento são permitidas.
angle
angle
<!entity % angle "#pcdata" -- or nmtoken in an attribute -- >
A representação fundamental de um ângulo é um número de graus múltiplos por 2 6 (65536) e armazenados como um inteiro. Como o espaço de coordenada é invertido (o eixo y positivo está inoperante), um ângulo no sentido horário é positivo. Uma implementação em conformidade é necessária para preservar a precisão total desse valor.
Uma implementação tem permissão para usar qualquer intervalo para ângulos e tem permissão para normalizar um ângulo (por exemplo, -180 a +180 ou 0 a 360). As implementações não são necessárias para serem consistentes; no entanto, a representação integral de um ângulo não deve exceder o intervalo de um inteiro com sinal de 32 bits.
O sufixo fd é usado para identificar essa representação de um ângulo (grau fracionário). Observe que isso é diferenciado do sufixo f para uma fração sem dimensão, embora a aritmética idêntica possa ser usada para dar suporte a ele. O padrão para um valor angular é graus simples, ou seja, um valor não dimensionado. Isso também pode ser sinalizado com o sufixo " " (o símbolo de grau). No entanto, o uso disso depende de ter uma codificação de documento adequada – consequentemente, o sufixo também é definido como graus médios. O conjunto completo de possíveis sufixos é o seguinte.
| Sufixo | Fator de Conversão | Comentários |
|---|---|---|
| fd | 1 | Representação interna de alta precisão |
| none, deg, | 65536 | Degrees |
| rad | 65536pi/180 | Radians |
Representações alternativas
A transformação de dimensionamento tem descontinuidades em múltiplos ímpares de 45 . Portanto, é extremamente importante que a conversão de qualquer quantidade inexata seja bem definida. Por esse motivo, a aritmética da conversão é definida como arredondada para menos infinito.
Como isso pode ser difícil ou impossível de garantir em algumas implementações, o uso do seguinte é definido como um recurso de nível 3:
- Qualquer valor de grau fracionário.
- Qualquer valor radiano
Portanto, valores qualificados fd e valores integrais não qualificados ou valores integrais qualificados deg ou devem ser tratados exatamente por uma implementação de nível 0 em conformidade. Outros valores não precisam disso. É altamente recomendável que qualquer implementação lide exatamente com a conversão de um valor de grau fracionário para um valor de grau escalonado (fd). Isso pode ser feito sem suporte a ponto flutuante.
Os requisitos mais exigentes para conversão diferenciam fd de f.
color
c
<!element c %color;>
As cores são uma parte essencial dos elementos gráficos de computação modernos. A proposta usa os métodos estabelecidos para especificar cores fixas. No entanto, as cores em diagramas raramente são cores estáticas simples; geralmente são derivados de outros elementos no diagrama. Grande parte dessas informações é muito específica do aplicativo, portanto, esta proposta fornece dois mecanismos muito básicos para especificar esse comportamento:
- Uma cor pode ser derivada de outra cor na mesma forma.
- Um pequeno número de operações aritméticas é definido para derivar ou modificar uma cor.
O mecanismo de forma de protótipo complementa isso permitindo que protótipos sejam definidos a partir dos quais as cores podem ser herdadas.
color
<!entity % color "( %color-unit; | pure | %color.adjustment; )*">
Um valor de cor é um superconjunto da definição de cor CSS1. As extensões permitem que o valor de cor RGB seja determinado a partir de outras cores dentro da forma ou de um esquema de cores geral definido usando CSS1.
Se o valor de um elemento for definido como uma cor, o conteúdo de um elemento definirá o valor de cor por meio de um token de cor única, opcionalmente modificado por uma operação aritmética na cor RGB correspondente.
Unidades de cores
O conjunto completo de tokens de cores vem de uma variedade de fontes: HTML, CSS1 e esta proposta. Eles são definidos da seguinte maneira usando a notação de CSS1 ou a notação XPointer definida para vinculação XML.
Nas definições do XPointer, a origem do local é o elemento que contém o valor de cor e a expressão refere-se a todo o conjunto de elementos da forma como se qualquer elemento de protótipo base tivesse sido mesclado com a forma. Quando o elemento correspondente não existe, o valor padrão desse elemento é usado em seu lugar.
| Color | Definição | Nível | Descrição |
|---|---|---|---|
| name | Consulte abaixo | 0 | Nome da cor HTML, conforme listado na tabela abaixo. |
| #rr'gg'bb' | #rr'gg'bb' | 0 | Representação de cor CSS1/sRGB padrão usando valores no intervalo 0.255 representado usando dois dígitos hexadecimal cada um. |
| #rgb | #rrggbb | 1 | Forma CSS1 abreviada com apenas três dígitos hexadecimal. |
| rgb(r,g,b) | #(r)(g)(b) | 1 | CSS1 rgb form; os elementos do valor rgb são convertidos conforme definido em CSS1 . |
| fill | ancestor(1,shape) child(1, fill) child(1, color) |
1 | A cor de preenchimento em primeiro plano da forma. |
| fillBack | ancestor(1,shape) child(1, fill) child(1, back) child(1, color) |
1 | A cor da tela de fundo do preenchimento da forma. |
| line | ancestor(1,shape) child(1, line) child(1, color) |
1 | A cor da linha de primeiro plano da forma. |
| lineBack | ancestor(1,shape) child(1, line) child(1,back) child(1, color) |
1 | A cor da linha de fundo da forma. |
| lineOrFill | line, fill | 1 | O valor da linha, se não for padrão, caso contrário, o valor de preenchimento. Isso retorna efetivamente a cor que está na borda da forma. |
| fillThenLine | fill, line | 1 | O valor de preenchimento, se não for padrão, caso contrário, o valor da linha. Isso retorna efetivamente a cor da forma principal (se a forma não estiver preenchida, o resultado será a cor da linha). |
| shadow | ancestor(1,shape) child(1, shadow) child(1, color) |
2 | A cor da sombra (este é um recurso de nível 2). |
| scheme | Consulte abaixo | 1 | Uma cor de esquema do esquema definido para o documento; veja abaixo. |
| scheme(index) | Consulte abaixo | 1 | O índice de cores do esquema, a partir de 0; veja abaixo. |
| this | Implied | 2 | A operação (preenchendo um caminho ou desenhando-a) é definida de alguma outra forma (por exemplo, como um bitmap) e a cor especifica uma "modificação" para as cores tão implícitas. |
| palette(index) | Implied | 3 | Comporta-se da mesma maneira que isso, exceto que exatamente uma entrada em uma tabela de cores bitmap é identificada. Permitido somente quando explicitamente declarado. |
| nenhum | - | 2 | Indica a ausência de uma cor; pode ser usado para cancelar uma operação de desenho que usa a cor. |
| sistema | Consulte abaixo | 3 | Uma cor definida pela interface do usuário do sistema. |
Essa cor permite que um valor de cor especifique uma modificação em uma cor derivada de alguma outra maneira; em particular, uma única operação pode ser especificada para todas as cores em um bitmap. A cor (índice) da paleta identifica uma entrada específica em um bitmap mapeado pela paleta. O uso disso só é definido para gravar uma entrada de tabela de cores que deve ser considerada transparente em tal bitmap.
A definição de um valor de cor não deve se referir a si mesma, direta ou indiretamente. Se essa definição for encontrada, é recomendável, mas não necessária, que a implementação trate o valor indefinido como preto.
Cores HTML
HTML define os seguintes dezesseis nomes de cores:
Nomes de cores e valores sRGB

Preto = "#000000"

Verde = "#008000"

Prata = "#C0C0C0"

Limão = "#00FF00"

Cinza = "#808080"

Verde-oliva = "#808000"

Branco = "#FFFFFF"

Amarelo = "#FFFF00"

Marrom = "#800000"

Azul-marinho = "#000080"

Vermelho = "#FF0000"

Azul = "#0000FF"

Púrpura = "#800080"

Verde-azulado = "#008080"

Fúcsia = "#FF00FF"

Aqua = "#00FFFF"
Cores do esquema
As cores do esquema referenciadas por esquema são definidas no nível do documento usando a marca meta com um atributo de nome de "Esquema de Cores do Tema".
<meta name="Theme Color Scheme"
content="rrggbb, rrggbb, rrggbb, rrggbb, rrggbb, rrggbb, rrggbb, rrggbb">
Essa marca permite que até oito cores de esquema sejam definidas. As cores indefinidas devem ser padrão para preto. As cores do esquema permitem que o esquema de cores usado para um documento completo seja alterado apenas alterando o conteúdo do Esquema de Cores do Tema. Para garantir que os gráficos importados de diferentes aplicativos de criação façam uso consistente das cores do esquema, as interpretações a seguir são definidas. O "uso" é uma breve descrição da finalidade e a coluna "descrição" fornece detalhes adicionais.
| Índice | Nome | Uso | Descrição |
|---|---|---|---|
| 0 | scheme.background | Tela de fundo | A cor usada para a tela de fundo de um gráfico (e, com frequência, para toda a página). |
| 1 | scheme.text | Texto e linhas | A cor do texto anexado a uma forma e à cor de linha padrão. |
| 2 | scheme.shadow | Sombras | Cor de sombra padrão: a cor normalmente usada para sombras de forma. |
| 3 | scheme.title | Texto do título | A cor a ser usada para título ou texto de título. |
| 4 | scheme.fill | Preenchimentos | Cor de preenchimento padrão: a cor normalmente usada para preencher formas. |
| 5 | scheme.accent | Destaque | Cor "realce" normal usada para enfatizar um elemento importante de um gráfico. |
| 6 | scheme.hyperlink | Ênfase e hiperlink | Cor de realce usada para hiperlinks. Pode ser usado para outras finalidades em que a cor indica um link para outras informações. |
| 7 | scheme.followed | Ênfase e hiperlink seguido | Realce a cor dos hiperlinks seguidos; também apropriado para links "versões anteriores". |
Uma cor de esquema pode ser referenciada por nome ou por índice, portanto scheme.fill e scheme(4) são da mesma cor.
As cores do esquema não participarão do esquema padrão se uma cor não for especificada. Uma cor de preenchimento não especificada deve ser sempre interpretada como branco, independentemente da cor do esquema 4. As cores de "ênfase" devem contrastar com as cores de plano de fundo (0) e de preenchimento (4) e as cores de texto e texto de título devem ter a mesma propriedade. Uma técnica padrão é tornar os acentos coloridos e o texto padrão descolorido (normalmente preto ou branco).
Cores do Sistema
Às vezes, os aplicativos registram cores com base nas configurações do sistema operacional dentro de elementos gráficos. Normalmente, elas são transitórias e não precisam ser gravadas; as definições de systemcolor existem apenas para dar suporte a isso. Uma cor do sistema é introduzida definindo uma marca apropriada em um novo namespace e inserindo as informações apropriadas no conteúdo do elemento.
Esta proposta define essa marca para codificar as cores da interface do usuário do Windows definidas no arquivo de cabeçalho winuser.h.
win.color
<!element win.color #pcdata>
O conteúdo do elemento é um único inteiro que contém o valor do COLOR_ relevante definido de winuser.h. Uma técnica semelhante pode ser adotada para qualquer especificação de cor específica do sistema ou do aplicativo. É altamente recomendável que esse recurso seja usado apenas para compatibilidade com versões anteriores.
Cores puras
pure
<!elementpure empty>
Se o elemento <pure/> aparece em um valor de cor, é uma dica de que a cor não deve ser aproximada por um padrão de dither. Esse é um recurso de nível 1 e uma implementação em conformidade não precisa honrá-lo. A designação é importante para gráficos exibidos em dispositivos de resolução média, como exibições de vídeo, em que pequenos recursos (como linhas) podem causar alias incorreto com cores dithered. Em dispositivos como impressoras, que normalmente dither todas as cores, exceto para as poucas cores totalmente saturadas, o dithering normalmente é suficientemente bom para evitar esse problema.
Ajustes de cor
A cor base pode ser ajustada por operações aritméticas no valor RGB. Essas operações são definidas usando elementos adicionais dentro do valor de cor. Esses ajustes são úteis somente quando aplicados a cores derivadas de outros elementos. É válido especificar esse ajuste em um valor de cor fixo; no entanto, uma implementação é permitida para reduzir isso ao valor RGB correspondente e armazená-lo em vez do original.
Todos os recursos de ajuste de cor descritos nessa seção são recursos de nível 1.
color.adjustment
<!entity % color.adjustment -- change to make to a color --
"( %color.op; )?, ( %color.adj; )*"
>
color.op
<!entity % color.op -- arithmetic operation --
"( darken | lighten | add | subtract | reverseSubtract |
blackWhite )"
>
<!element darken %color.parameter;>
<!element lighten %color.parameter;>
<!element add %color.parameter;>
<!element subtract %color.parameter;>
<!element reversesubtract %color.parameter;>
<!element blackwhite %color.parameter;>
color.parameter
<!entity % color.parameter "#pcdata" >
color.adj
<!entity % color.adj -- additional adjustment to color --
"invert | invert128 | gray"
>
<!element invert empty>
<!element INVERT128 empty>
<!element gray empty>
O parâmetro das seis primeiras operações é um único valor numérico integral no intervalo de 0 a 255. O ajuste é executado no valor RGB de 3x8bit da seguinte maneira:
Se <cinza/> for especificado, o valor RGB será substituído por yyy, onde y é o valor de luminância (y') calculado do valor sRGB na sequência do BT.709 itu-r. Esse cálculo é:
y = 0 2125xr + 0 7154xg + 0 0721xbSe uma modificação color.op for fornecida, cada componente será ajustado separadamente de acordo com a tabela abaixo. c é o valor do componente e p é o valor color.parameter.
Operação Fórmula darken c := cxp/255 lighten c := 255 – (255-c)xp/255 add c := c + p subtrair c := c - p reversesubtract c := p - c Blackwhite if c < p thenc := 0elsec := 255 Em cada caso, se o valor do componente calculado, c, exceder 255, 255 será usado e, se for menor que 0, 0 será usado.
Se <INVERT128/> for fornecido, o valor 128 será subtraído ou adicionado a cada componente de acordo com se o componente é menor que 128 ou não.
if c < 128 then c := c + 128 else c := c - 128Se <invert/> for fornecido, cada componente será substituído por 255 menos o valor do componente.
c := 255-c
font
font
<!element font any>
<!attlist font
style cdata #implied>
Uma fonte é identificada usando um atributo de estilo conforme definido na seção CSS1 5.2 (propriedades da fonte). O corpo do elemento de fonte é, no momento, indefinido, mas pode ser usado no futuro para codificar informações de fonte padrão. As implementações iniciais desta proposta devem preservar, mas não interpretar as informações.
É concebível que o suporte seja adicionado no futuro para informações de fonte fora de linha (fontes para download ou recursos de fonte compartilhada). Isso será feito por um elemento XML-link dentro do conteúdo do elemento de fonte, garantindo a compatibilidade com versões anteriores com implementações iniciais.
bitmap
bitmap
<!element bitmap empty>
<!attlist bitmap
XML-link cdata #fixed "simple"
href cdata #REQUIRED
title cdata #implied
behavior cdata #implied
show (embed|replace|new) #fixed "embed"
inline (true|false) #fixed "true"
actuate (auto|user) #fixed "auto"
>
O elemento bitmap permite que uma referência a um recurso de imagem fora de linha (normalmente um bitmap) seja incluída em um gráfico.
bitmap é um recurso de nível 1.
O atributo de comportamento pode ser usado para indicar como o bitmap deve ser tratado por um aplicativo de edição. O valor pode ser um ou ambos os tokens a seguir.
| Token | Descrição |
|---|---|
| separate | Marca o bitmap como uma entidade separada, que não deve ser considerada parte integrante do documento. O bitmap não deve ser mantido com o documento. Se o documento for copiado, o bitmap não deverá ser copiado; se o documento for movido, o bitmap não deverá ser movido com ele. |
| original | O atributo de título identifica o local original do bitmap como uma URL. Caso contrário, o significado do título não é especificado. |
Esses valores são dicas quanto ao comportamento esperado. A opção separada refere-se ao comportamento dos dados referenciados pelo href. Se forem fornecidos separados e originais, o aplicativo deverá desconsiderar o URI href e regenerar o bitmap dos dados originais. Se apenas o original for fornecido, espera-se que o aplicativo use o URI href para localizar o bitmap, mas poderá dar ao usuário a opção de regenerá-lo.
É válido tornar o URI href e o atributo de título o mesmo valor (lexical) – isso é apropriado se o bitmap referenciado não for "armazenado com" o documento. Destina-se (embora não seja necessário) que o href seja usado para a própria cópia do bitmap do documento, que pode ser excluída se as formas de referência forem excluídas, e esse título seja usado para indicar uma cópia compartilhada. Portanto, se ambos contiverem o mesmo valor, não haverá nenhuma cópia específica do documento.
Os aplicativos poderão desconsiderar a dica se ela não se ajustar ao modelo de armazenamento real dos dados XML.
Formatos de arquivo de imagem
No contexto dessa proposta, os dados externos são invariavelmente um bitmap ou um arquivo que é usado para produzir um bitmap. No nível de renderização 0, nenhum formato de bitmap externo precisa ter suporte. Os caminhos só podem ser preenchidos com cores sólidas. Para renderizar o conjunto completo de preenchimentos de nível 1 de renderização, é necessário ter suporte para bitmaps. O nível de renderização 1 inclui (somente) os seguintes formatos:
- JFIF, ou seja, dados de formato ISO/IEC 10918 inseridos em um arquivo com o cabeçalho JFIF (que pode ser considerado como um marcador APP0 específico após o fabricante de SOI) e incluindo (apenas) o intervalo de formatos JPEG com suporte pelo código IJG v6.
- PNG, conforme definido pela especificação png versão 1.0.
O nível de renderização 2 também inclui suporte para o seguinte:
- GIF, conforme definido pela especificação GIF publicada pelo CompuServ em 1987 (normalmente chamado de "GIF87a"). GIF89a também deve ser suportado neste nível, sujeito à restrição de que os dados não devem conter quaisquer blocos de extensão que precisem de interpretação para exibir o bitmap, exceto extensões de controle gráfico, sem a necessidade de entrada do usuário ou de um tempo de atraso. Isso permite que os comentários sejam incluídos, mas não a extensão de texto sem formatação. Um aplicativo pode inserir extensões de aplicativo (0x21, 0xFF), mas, usando a terminologia desta proposta, elas devem conter apenas edição, não renderização, dados.
Qualquer outro formato de dados usado no gráfico força esse gráfico a ser pelo menos editando o nível 3 e possivelmente renderizando o nível 3 (se os dados forem necessários para renderizar o gráfico). Um aplicativo é incentivado a publicar os formatos aos quais ele dá suporte. Por exemplo, o Microsoft Office dá suporte aos seguintes formatos adicionais nativamente e, portanto, pode gravar dados de edição nessa forma:
- WMF -- metafile do Windows (formato Win 3.1)
- EMF -- Metafile "aprimorado" do Windows (formato Win32)
- PICT -- Arquivo PICT do Mac OS QuickDraw (todas as versões, mas sem registros quicktime ou outras extensões)
- BMP -- formato de arquivo bitmap do Windows, formatos "os/2" (BITMAPCORE), BITMAPINFO, BITMAPV4 e BITMAPV5
vector
v
<!element v "( #pcdata | p )*">
Um caminho gráfico de vetor é codificado como pcdata. O conteúdo do elemento v é misto, contendo uma descrição de caminho de vetor opcionalmente parametrizada com elementos p.
Voltar ao Início