Dear Erik,

thank you for looking at the problem. Nonetheless, I am bit puzzled.

The problems I have described exist in plan9port and heirloom
software. I haven't yet tried to what extent it also applies to plan9
proper. And it seems you are suggesting some changes to the latter
software.

Also, at least partly, I guess, some of my problems on linux are
caused by non-existing lucida sans fonts (and all the mess around
fonts around troff/gs and unicode coverage).

So what problem should your change remove? (I am sorry it's not clear
to me from your code.)

Thank you
Ruda

On 11 November 2011 16:56, erik quanstrom <[email protected]> wrote:
> this does work on my system.  here's the diff:
>
> - erik
>
> -----
> /n/sources/plan9//sys/src/cmd/eqn/text.c:1,6 - text.c:1,7
>  #include "e.h"
>  #include "y.tab.h"
>  #include <ctype.h>
> + #include <utf.h>
>
>  #define       CSSIZE  1000
>  char  cs[CSSIZE+20];  /* text string converted into this */
> /n/sources/plan9//sys/src/cmd/eqn/text.c:42,48 - text.c:43,49
>        wchar_t r;
>        int w;
>
> -       w = mbtowc(&r, psp, 3);
> +       w = mbtowc(&r, psp, UTFmax);
>        if(w == 0){
>                psp++;
>                return 0;
> /n/sources/plan9//sys/src/cmd/eqn/text.c:49,55 - text.c:50,56
>        }
>        if(w < 0){
>                psp += 1;
> -               return 0x80;    /* Plan 9-ism */
> +               return Runeerror;       /* Plan 9-ism */
>        }
>        psp += w;
>        return r;
> /n/sources/plan9//sys/src/cmd/eqn/text.c:112,128 - text.c:113,125
>        printf(".ds %d \"%s\n", yyval, p);
>  }
>
> - int isalpharune(int c)
> - {
> -       return ('a'<=c && c<='z') || ('A'<=c && c<='Z');
> - }
> -
>  int isdigitrune(int c)
>  {
>        return ('0'<=c && c<='9');
>  }
>
> - trans(int c, char *p1)
> + int
> + trans(int c, char *)
>  {
>        int f;
>
> /n/sources/plan9//sys/src/cmd/eqn/tuning.c:146,151 - tuning.c:146,155
>                target = &Subbase;
>        else if (eq(s, "Supshift"))
>                target = &Supshift;
> +       else{
> +               ERROR "unknown ftune" FATAL;
> +               return;
> +       }
>        if (t[0] == '+' || t[0] == '-')
>                *target += f;
>        else
>

Reply via email to