Usando o MS Shell Dlg e o MS Shell Dlg 2

O Windows está disponível em edições localizadas para vários idiomas. No entanto, a edição em inglês também pode ser usada para executar aplicativos escritos em outros idiomas além do inglês. Isso é verdade mesmo quando o script usado para esses idiomas é diferente, como quando os aplicativos são escritos em grego ou japonês. Esses aplicativos exigem uma interface do usuário com caixas de diálogo, ícones e utilitários que fornecem informações no idioma do aplicativo, que pode ser diferente do idioma que está sendo usado na interface do usuário atual do Windows.

O problema na seleção da fonte para uma interface de usuário é óbvio. Por exemplo, a fonte shell, também conhecida como fonte de sistema ou padrão, para o sistema operacional Windows 98 em inglês (Estados Unidos) é MS Sans Serif, enquanto a fonte shell para Windows 98 em grego (Grécia) é MS Sans Serif Grego. Para o Windows 98 japonês (Japão), o tipo de letra da interface é MS UI Gothic. Esses conjuntos de caracteres não podem ser mapeados diretamente uns para os outros. A substituição do MS Sans Serif pelo MS Sans Serif Greek quando a localidade está definida como Grego (Grécia) não permite que os aplicativos existentes sejam executados adequadamente ou exibam caracteres gregos nos menus do sistema, caixas de diálogo e controles de edição.

O Windows resolve esse problema usando as fontes lógicas MS Shell Dlg e MS Shell Dlg 2 para permitir a seleção da fonte apropriada para exibição de script. Esta seção aborda várias considerações de programação para usar as fontes lógicas para implementar caixas de diálogo, menus e similares para interfaces de usuário flexíveis que são bem exibidas em todos os sistemas operacionais Windows suportados e em todos os idiomas. Para obter mais informações, consulte criação e seleção de fontes. Consulte também a secção "Interface do Utilizador Multilingue" e para uma discussão sobre o uso da tecnologia MUI (Interface do Utilizador Multilingue) na criação de interfaces de utilizador para as suas aplicações multilingues.

Sobre as fontes lógicas

As fontes lógicas MS Shell Dlg e MS Shell Dlg 2 são essencialmente nomes de rosto usados para mapeamento para habilitar o suporte a localidades/culturas com caracteres que não estão contidos na página de código 1252, o conjunto de caracteres do Windows para os Estados Unidos e Europa Ocidental. O MS Shell Dlg corresponde à fonte padrão do shell associada à cultura ou localidade atual e suporta a apresentação clássica da área de trabalho do Windows. O nome do rosto do MS Shell Dlg 2 foi introduzido no Windows 2000 para suportar a aparência que foi introduzida com o Windows 2000.

Por exemplo, se seu aplicativo usa o MS Shell Dlg ou o MS Shell Dlg 2 para suas caixas de diálogo, uma equipe de localização que cria recursos em grego para seu aplicativo pode se concentrar na tradução de texto. Eles não precisam se preocupar com questões como a distinção entre MS Sans Serif e MS Sans Serif Greek.

Observação

As fontes geradas pelo MS Shell Dlg e MS Shell Dlg 2 são diferentes em diferentes versões do Windows. Portanto, você deve garantir que os elementos da interface do usuário sejam bem exibidos em todas as plataformas.

 

Manipular nomes de fontes com Hard-Coded

O uso de Unicode permite que os aplicativos lidem com milhares de caracteres diferentes, mas a maioria das fontes não cobre todo o conjunto de caracteres Unicode. Seus aplicativos não devem codificar nomes de fontes. Um motivo é que codificar um nome de fonte que exibe caracteres para um idioma e não caracteres para outro idioma faz com que todo o texto localizado no segundo idioma seja exibido incorretamente. Outra razão para não codificar nomes de fonte é que a fonte desejada pode não ser carregada no sistema operacional que está exibindo o texto do aplicativo.

A melhor maneira de tratar nomes de fontes é considerá-los como recursos localizáveis. Usando uma fonte lógica resolve o problema de executar sua interface usando qualquer idioma no Windows NT ou Windows 2000, para qualquer idioma. Definir um nome de fonte como um recurso localizável torna possível para o localizador alterar a fonte para a interface do usuário localizada.

Como lidar com tamanhos de fonte Hard-Coded

Alguns scripts são complexos e requerem um grande número de pixels para serem exibidos corretamente. Por exemplo, a maioria dos caracteres ingleses é exibida em uma grade 5x7, mas os caracteres japoneses precisam de pelo menos uma grade 16x16 para serem claramente vistos. Enquanto o chinês precisa de uma grade 24x24, o tailandês precisa apenas de 8 pixels para largura, mas pelo menos 22 pixels para altura. É fácil entender que alguns caracteres podem não ser legíveis em um tamanho de fonte pequeno.

A interface do usuário do aplicativo deve tratar os tamanhos de fonte como recursos localizáveis. Usando uma fonte lógica resolve o problema de executar sua interface usando qualquer idioma no Windows NT ou Windows 2000, para qualquer idioma. Definir um tamanho de fonte como um recurso localizável permite que seu localizador altere a fonte para a interface do usuário localizada.

Mapeie as fontes lógicas

Cada uma das fontes lógicas é mapeada por uma entrada no registro para a fonte de shell apropriada para a localidade ativa no momento. Quando uma das fontes lógicas é usada, o Windows alterna para a fonte da localidade atualmente selecionada durante a execução. Esta operação permite a exibição correta da interface de usuário do Windows em inglês (Estados Unidos), bem como caracteres que não estão na página de código 1252. Assim, atualmente, aplicações localizadas podem ser executadas na versão em inglês (Estados Unidos) do Windows sem precisar de modificação.

Cada computador Windows mapeia o MS Shell Dlg e o MS Shell Dlg 2 para uma fonte física apropriada, com base na linguagem definida para programas não-Unicode, descrita em NLS Terminology. Os mapeamentos reais são armazenados na chave do Registro HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\FontSubstitutes.

Mapeamento de fontes no Windows Me/98/95

MS Shell Dlg geralmente mapeia para uma versão específica da página de código do MS Sans Serif.

Mapeamento de fonte no Windows NT 4.0

MS Shell Dlg mapeia para MS Sans Serif para línguas da Europa Ocidental e Central, línguas gregas, turcas, bálticas e que utilizam escrita cirílica; MS UI Gothic para japonês; Gulim para coreano; Simsun para chinês simplificado; PMinglu para chinês tradicional; entre outros.

Mapeamento de fontes no Windows 2000, Windows XP, Windows Server 2003, Windows Vista e Windows 7

Ambas as fontes lógicas são mapeadas para fontes TrueType baseadas em Unicode. MS Shell Dlg usa Microsoft Sans Serif (diferente do MS Sans Serif) se o idioma de instalação não for japonês. O MS Shell Dlg mapeia para o MS UI Gothic se o idioma de instalação for japonês.

Em sistemas MUI do Windows XP, o MS Shell Dlg mapeia para MS UI Gothic somente quando a localidade do sistema e o idioma da interface do usuário estão definidos como japonês. Caso contrário, o MS Shell Dlg mapeia para o Microsoft Sans Serif.

No Windows Vista e Windows 7, o MS Shell Dlg mapeia para o MS UI Gothic se o idioma padrão da interface do usuário da máquina estiver definido como japonês (independentemente do idioma de instalação). O MS Shell Dlg mapeia para o Microsoft Sans Serif se o idioma padrão da interface do usuário da máquina estiver definido para um idioma diferente do japonês.

MS Shell Dlg 2 simplesmente usa a fonte Tahoma independentemente do idioma. A principal vantagem do Tahoma sobre o Microsoft Sans Serif é que o Tahoma tem uma fonte nativa em negrito. Sua principal desvantagem é que os sistemas operacionais mais antigos podem não tê-lo instalado e podem substituir uma fonte menos atraente.

Caracteres que não são implementados em Tahoma ou Microsoft Sans Serif podem ser implementados em outras fontes do Windows que são usadas para exibição de texto em interfaces de usuário. Dependendo de quais controles ou APIs são usados para exibir texto, vários mecanismos, como de vinculação de fontes, podem ser usados pelo sistema para selecionar automaticamente essas fontes para exibir esses caracteres.

As aplicações podem usar o Microsoft Sans Serif ou o Tahoma explicitamente e evitar o nível de indireção envolvido no uso do MS Shell Dlg ou do MS Shell Dlg 2. Devido à vinculação de fontes, especificar Microsoft Sans Serif ou Tahoma fornece glifos apropriados para todos os idiomas.

Use o MS Shell Dlg para um aplicativo diferente do inglês no Windows Me/98/95

No Windows Me/98/95, o MS Shell Dlg não se destina ao uso com um aplicativo de interface do usuário estático que não seja em inglês que é executado quando o usuário escolhe uma localidade com um conjunto de caracteres base diferente do Windows. Nesse caso, o idioma da interface do utilizador do aplicativo pode não ser suportado com a fonte que é substituída por MS Shell Dlg.

Por exemplo, se o usuário estiver usando uma versão em alemão do Windows e quiser instalar um aplicativo de idioma grego não-Unicode, o usuário tentará alterar a localidade para grego (Grécia). Esta ação redefine o MS Shell Dlg para uma fonte grega, mas essa fonte não contém todos os glifos necessários para exibição em alemão. Portanto, quaisquer caracteres não-ASCII na interface do usuário em alemão não serão exibidos corretamente. Para suportar este cenário, uma aplicação tem de definir o MS Shell Dlg para um tipo de letra que contenha os glifos da Europa Ocidental e do grego.

Enumeração e Seleção Internacional de Fontes

Interface de Usuário Multilíngüe