zopencommunity / man-dbport

Tool for generating manual pages for Unix programs
Apache License 2.0
0 stars 2 forks source link

Characters not being rendered properly #7

Closed MikeFultonDev closed 1 year ago

MikeFultonDev commented 1 year ago

I don't know if this is a '1047' problem or something else but if I specify:

man --locale=fr vim

then I get:

VIM(1) General Commands Manual VIM(1)

NOM vim - Vi IMproved, �diteur de texte pour programmeurs

SYNOPSIS vim [options] [fichier ...] vim [options] - vim [options] -t marqueur vim [options] -q [fichiererreurs]

   ex
   view
   gvim gview evim eview
   rvim rview rgvim rgview

DESCRIPTION Vim est un �diteur de texte proposant une compatibilit� ascendante avec Vi. Il permet d'�diter n'importe quel type de texte brut. Il est particuli�rement adapt� pour l'�dition des programmes.

   Il  comporte  de  nombreuses am�liorations par rapport � Vi : annulation sur plusieurs niveaux, fen�tres et tampons multiples, coloration syntaxique, �dition en ligne de commande, compl�tement
   des noms de fichiers, aide en ligne, s�lection visuelle, etc. Voir ":help vi_diff.txt" pour un r�sum� des diff�rences entre Vim et Vi.

   Pendant l'ex�cution de Vim  une aide abondante est accessible au travers du syst�me d'aide en ligne, gr�ce � la commande ":help". Voir la section AIDE EN LIGNE plus bas.

   Le plus souvent Vim est d�marr� pour �diter un unique fichier avec la commande

        vim fichier

   Plus g�n�ralement, Vim est lanc� avec :

        vim [options] [listefichiers]

   Si la listefichiers est omise, l'�diteur d�marre avec un tampon vide. Autrement, l'une des quatre m�thodes suivantes vous permettra de choisir un ou plusieurs fichiers � �diter.

   fichier ... Une liste de noms de fichiers. Le premier sera le fichier courant et sera lu dans le tampon. Le curseur sera plac� sur la premi�re ligne du tampon. Vous pouvez  passer  aux  autres
               fichiers avec la commande ":next". Pour �diter un fichier d�butant par un tiret, faites pr�c�der la liste de fichiers par "--".

   -           Le fichier � �diter est lu sur l'entr�e standard (stdin). Les commandes sont lues depuis stderr, qui devrait �tre un terminal.

   -t {marqueur}
               Le  fichier � �diter et la position initiale du curseur d�pendent d'un "marqueur", qui est une sorte d'�tiquette. {marqueur} est recherch� dans le fichier des marqueurs, le fichier
               correspondant devient le fichier courant et la commande associ�e est ex�cut�e. Principalement utile pour les programmes en C ; dans ce cas, {marqueur} peut �tre le nom d'une  fonc-
               tion. Au final, le fichier contenant cette fonction devient le fichier courant et le curseur est plac� au d�but de la fonction. Voir ":help tag-commands".

   -q [fichiererreurs]
               D�marre  en  mode Mise-au-point (QuickFix). Le fichier [fichiererreurs] est lu et la premi�re erreur est affich�e. Si [fichiererreurs] est omis, le nom du fichier est lu dans l'op-
               tion 'errorfile' ("AztecC.Err" par d�faut sur Amiga, "errors.err" sur les autres syst�mes). La commande ":cn" permet de sauter aux erreurs suivantes. Voir ":help quickfix".

   Vim se comporte diff�remment selon le nom de la commande (l'ex�cutable peut cependant �tre le m�me fichier).

   vim       La fa�on "normale", le comportement par d�faut.

   ex        D�marre en mode Ex. La commande ":vi" permet de passer en mode Normal. Ce mode est �galement accessible avec l'argument "-e".

   view      D�marre en mode Lecture-Seule. Vous �tes prot�g� de l'�criture accidentelle des fichiers. Ce mode est �galement accessible avec l'argument "-R".

   gvim gview
             La version graphique. Ouvre une nouvelle fen�tre. �galement accessible avec l'argument "-g".

   evim eview
             La version graphique en mode D�butant (easy). Ouvre une nouvelle fen�tre. �galement accessible avec l'argument "-y".
MikeFultonDev commented 1 year ago

For some reason, if I look at the 'vim' man page file, it is being stored in IBM-1047 (which is not a good thing)

t IBM-1047    T=on  /home/fultonm/zopen/boot/vim/share/man/fr.UTF-8/man1/vim.1

(this is fixed with the latest vim and the files are now ISO8859-1, but it doesn't change the problem)

MikeFultonDev commented 1 year ago

Also, I see that it is converting from UTF-8 to ISO-8859-1 as part of display, e.g. iconv -c -f UTF-8 -t ISO-8859-1//TRANSLIT (run with man -d ...). This is probably because man-db is being built wrong - we want to keep the file in UTF-8 to retain the information until display.

For example, If I create a text file and tag it as ISO8859-1 with one line:

Claire Côté

then this file will be editable and 'cat' will work correctly on it to display on the terminal. I noticed 'less' does not display the text correctly, but it DOES if I

export LESSCHARSET=utf-8

first.

MikeFultonDev commented 1 year ago

I have reproduced this problem on my Mac in that if I 'cat' a French ASCII file, it doesn't look right, but if I 'cat' a French UTF-8 file, it does look right, and furthermore, both look right in vim. Some googling got me to this: https://unix.stackexchange.com/questions/78776/characters-encodings-supported-by-more-cat-and-less

MikeFultonDev commented 1 year ago

Good News! If I change my terminal setting (in my case, I change the terminal to 'western-ascii') then I am able to get vim to display right

image

MikeFultonDev commented 1 year ago

So - I will close this as 'user error' 😁 ... As it turns out, 'french' internally uses ISO8859-1 internally in man even though the man page may be UTF-8. This appears to be 'working as designed'.

MikeFultonDev commented 1 year ago

Before I close this, I will update the FAQ...

MikeFultonDev commented 1 year ago

Here is the PR for the docs update: https://github.com/ZOSOpenTools/meta/pull/259