Considere adicionar uma interface para detectar o nome do sistema operacional / plataforma, por exemplo, windows
ou linux
.
ctex
pacote \ctex_detected_platform:
Temos \sys_if_platform_(unix|windows):(pTF)
e \c_sys_platform_str
em l3candidates
: eles funcionam para você?
Espero testar os macos também, já que fontspec
etc pode ter um comportamento diferente.
Vejo que isso é feito simplesmente procurando um arquivo “padrão” no macOS, portanto, não precisa do write18 e deve ser bem rápido. Sem objeções de mim. O que você acha Joseph?
Enviado com GitHawk
Apenas para sua informação:
/Library/Fonts/Songti.ttc
(fonte chinesa) existe desde o macOS 10.9 (Mavericks)./Library/Fonts/Songti.ttc
falhará para macOS 10.6 - 10.8./System/Library/Fonts/Palatino.ttc
/System/Library/Fonts/Menlo.ttc
).Obrigado pelos detalhes extras! Testar para Palatino parece uma aposta bastante segura.
Isso está coberto pelo código existente? Você está nos pedindo para considerar a mudança para o estável?
Acho que a solicitação é para \ sys_if_platform_ macos: pTF (ou semelhante) também. Isso pode ser feito verificando (digamos) a existência de um arquivo de uma fonte específica do mac ou arquivo de sistema.
Apenas para sua informação:
Desculpe, /System/Library/Fonts/Palatino.ttc
existe desde 10.9 Mavericks (para 10.8 Mountain Lion ou anterior, era /Library/Fonts/Palatino.ttc
vez disso),
A partir de 10.6 Snow Leopard até 10.14 Mojave, /System/Library/Fonts/Menlo.ttc
sempre existe. Este pode ser um teste mais seguro.
Meu plano 'banner TeX' funcionaria? Teríamos que trabalhar um pouco para ordenar as primitivas ((u) pTeX / XeTeX), mas esse é um lugar óbvio para encontrar detalhes explícitos do sistema operacional.
O banner atual do TeX nem sempre contém o nome da plataforma.
Com o pdfTeX, vi que o build do Debian fornece (TeX Live 2018/debian)
e o build do Win32 fornece (TeX Live 2018/W32TeX)
, mas outros não contêm nenhuma string.
Para e- (u) pTeX, já temos uma implementação candidata para a primitiva de banner: https://github.com/texjporg/tex-jp-build/compare/banner
As questões restantes são seu nome (\ epTeXbanner, \ eptexbanner, vs. um mais genérico como \ enginebanner?) E a necessidade.
@aminophen Bem, parece que essa abordagem não vai funcionar: eu não conseguia me lembrar o que os sistemas MacOS TeX têm no banner. Portanto, não vale a pena se preocupar, eu suspeito. Provavelmente, procurar por um arquivo de marcador é o melhor que podemos fazer
algo como uma fonte do sistema básico pode ser um indicador bom o suficiente para algo como OSX, por outro lado, sempre existe o perigo de que versões futuras ou variantes regionais não a tenham. De alguma forma, parece-me que não deveria ser muito difícil se os motores estivessem fornecendo essas informações (desde que alguém chegue a um acordo sobre o que eles fornecem)
@FrankMittelbach Você está pensando em algo como \platformname
como um primitivo? Um para levantar na lista TL, talvez?
@josephwright sim algo assim com resultados definidos entre os motores, de modo que todos relatem o mesmo valor de na mesma plataforma (e talvez "desconhecido" para plataformas incomuns / não padronizadas).
@FrankMittelbach Seria definitivamente melhor do que tentar adivinhar com peculiaridades dependentes do sistema. As chamadas de sistema C relevantes devem ser bastante fáceis de usar.
Apenas pesquisando, encontrei isto: https://stackoverflow.com/questions/3596310
Não tenho certeza se essa função está realmente disponível em todas as plataformas. Além disso, não sei sobre a lista completa de "sysname" retornado.
- De qualquer forma, se você decidir propor uma adição ao nível do motor, espero que esta seja a última proposta em relação às informações de arquitetura. Quer dizer, se houver uma possibilidade de proposta futura (por exemplo, detectar 32/64 bits ou detectar a revisão do sistema operacional), eles devem ser levantados aqui também. Não me sinto muito confortável em adicionar novos primitivos como esse de vez em quando, porque testar em várias plataformas geralmente é difícil.
Acho que no momento provavelmente cobrimos tanto quanto razoavelmente podemos aqui em expl3
: o negócio de fontes provavelmente deve ser tratado por código dedicado.
@josephwright Desculpe, eu pretendia voltar a isso. IMO, seria muito seguro testar /System/Library/Fonts/Menlo.ttc
como um método rápido e robusto para consultar se estamos executando no Mac OS. Já existe há muito tempo, então funcionará em plataformas mais antigas; é uma parte central do sistema operacional, portanto, é extremamente improvável que desapareça e deve ser robusta em todas as instalações da região; está em um caminho que dificilmente será replicado em outras plataformas; o arquivo de fonte Menlo.ttc
si AFAIK não está disponível de nenhuma forma de terceiros.
Eu proporia adicionar este teste, e o pior que pode acontecer é se ele conseguir algum uso, e for descoberto que tem alguns casos extremos, podemos explorar uma detecção de sistema operacional mais robusta por meio de primitivas ou semelhantes. Posso adicionar um branch para isso, se quiser?
@wspr O plano é apenas dividir o \sys_if_platform_unix:(TF)
atual de forma que não seja verdade para MacOS? Ou você quer um teste \sys_if_platform_macos:(TF)
separado? Eu posso ver a lógica em ambas as abordagens.
@josephwright Eu acho que "se unix" retornaria verdadeiro para o mac OS. E provavelmente também para o subsistema Windows para Linux ?? Eu não posso testar isso.
@wspr Eu verifiquei o WSL: ele relata ' unix
'.
No momento, temos \c_sys_platform_str
que será windows
ou unix
: podemos mudar isso no MacOS?
Em 06/05/19 10:37, Joseph Wright escreveu:
@wspr https://github.com/wspr Eu verifiquei o WSL: ele relata '| unix |'.
No momento, temos | \ c_sys_platform_str | que será | windows | ou
| unix |: nós mudamos isso no MacOS?
Esta é basicamente a mesma pergunta que o \ sys_if_engine_ luatex: TF e
\ c_sys_engine_str que tivemos em algum outro problema.
Eu sugiro fazer \ c_sys_engine_str e \ c_sys_platform_str como específicos
como pode ser (dentro do razoável, portanto, não incluindo versões e quais não), mas
permitindo que vários \ sys_if_engine _... e \ sys_if_platform _... sejam verdadeiros.
Minha opinião não é fortemente sustentada.
Eu concordo com o Bruno ...
É preciso mencionar que, no macOS Catalina (10.15), Songti.ttc
e muitas outras fontes foram movidas para /System/Library/Fonts/Supplemental/
.
Comentários muito úteis
Acho que a solicitação é para \ sys_if_platform_ macos: pTF (ou semelhante) também. Isso pode ser feito verificando (digamos) a existência de um arquivo de uma fonte específica do mac ou arquivo de sistema.