MSWord 2016 Digit Printing Issue

I am facing issue in Windows 10 (MS Word 2016) in printing a circle Ornament around Arabic Digits. It is displaying correctly in MS Word as required, but when I print it or make a PDF it just Print the Arabic Digits without Ornament, also same with generating PDF from MS Word.
But this is printing fine with Circle Ornament through NOTEPAD (Windows 10).
Also this is working and Printing perfectly in Windows 7 (Word2013).
I made a feature (Liga) to substitute the digit with Ornamental shape of Digit.
Does I am missing some setting in MS Word 2016 (Windows10).
Attached here sample Font and docx file.

Comments

  • It works fine in Word 16.27/macOS 10.14.5, so the issue is likely tied to Word 2016 for Windows.
  • André G. Isaak
    André G. Isaak Posts: 634
    edited July 2019
    While this doesn't solve your rendering issue, I think your ligature code isn't quite right.

    Right now you've got:

    feature liga { # Standard Ligatures
     script arab; # Arabic
    lookupflag RightToLeft;
        sub a002 a000 a000 by a002_a000_a000;
        sub a002 a000 by a002_a000;
        sub a002 by _770;
    } liga;

    Should that not actually be:

    feature liga { # Standard Ligatures
     script arab; # Arabic
    lookupflag RightToLeft;
        sub uni06DD a002 a000 a000 by a002_a000_a000;
        sub uni06DD a002 a000 by a002_a000;
        sub uni06DD a002 by _770;
    } liga;

  • Respected André G. Isaak, I tried to insert 06DD before or after the numbers, but got same response, If I put before it appears before numbers, but still numbers are outside the ornament,
    It still works OK in Windows7 with or without adding 06DD, but still printing without circle in Windows 10...

  • Respected André G. Isaak, I tried to insert 06DD before or after the numbers, but got same response, If I put before it appears before numbers, but still numbers are outside the ornament,
    It still works OK in Windows7 with or without adding 06DD, but still printing without circle in Windows 10...

  • Did you try setting the advance width of uni06DD to zero?
  • John Hudson
    John Hudson Posts: 3,229
    U+06DD is an enclosing sign character, so is meant to be encoded before the numerals that it encloses. This is defined by the Unicode Standard.

    My approach to handling this sign would be to first contextually substitute variant forms of numerals that will behave as marks within the enclosing ornament, and then use contextual GPOS to anchor either individual numerals or sequences of numerals correctly within the enclosing ornament. But a similar affect can be achieved using contextual kerning, which I believe is the method used in e.g. Microsoft's Arabic Typesetting font.
  • Did you try setting the advance width of uni06DD to zero?
    As you can see in sample font attached in the begining of the post, I am just using simple Ligature substitution without using 06DD sign, so there is no need to make it zero width.
    I test this sample on Windows 7, its working fine, You test it on Mac/MSWord, working fine, so why we need to add this 06DD.
    This sample numbers(Font) is displaying fine in windows 10 (MSWord), may be it means Ligature substitution is working fine, but only problem is when I print, through windows 10 using MSWord, it does not print the outer Circle.

    USING SAME WINDOWS 10 and NOTEPAD, THESE DIGITS ARE DISPLAYING AND PRINTING FINE WITH CIRCLE AS REQUIRED.
    It works fine in Word 16.27/macOS 10.14.5, so the issue is likely tied to Word 2016 for Windows.
    The only issue is when I print these digits through MSWord, it have problem, but when I Print same file through Notepad, in Windows 10, it prints OK.
    So if the same numbers are printing OK, with circle in Windows 10 through Notepad and print Wrong (Without circle) through MSWord, What does this means.





  • To me, it means there is a bug in that particular version of MSWord.
  • I also feel this may be MSWord issue, because printing through Notepad is OK. Any suggestion how to raise this issue to Microsoft Officials, or related Forum.. Thanx.
  • Thomas Phinney
    Thomas Phinney Posts: 2,899
    Anybody involved/interested who has the latest version of Word for Windows, to verify whether it is still a problem with the current version? Word 2016 is not the latest.
  • I suspect it is not.

    I tried to help Ashfaq with some other issue he was having and was unable to reproduce the problems using the current version of word running under virtual windows 10 and, like these issues, he finds them in windows 10 but not windows 7. So I suspect that Office 2016 doesn't play well with the shaping engine used in Windows 10.

    Unfortunately, whereas I have Mac systems dating back to 1984, I only have versions of Windows going back to Redstone 1, so was unable to test this.
  • I still see it repro in latest publicly released version, but I see it fixed in something not yet released (can't tell when it will become available).

    Root cause is few places where GDI/Uniscribe is still used in Office, mainly on printing codepath.

    Thanks,
    Sergey
  • Thank you all for suggestions. I got the solution for the problem, as I posted that in Windows7 word2013,16 outer circle is printing with Numbers, but in Windows10 Word2013,16, its displaying well with circle, but not printing outer circle with digits.
    In my sample font attached in this post, I used Ligature Substitution feature;
    Standard Ligature <liga>;
    with this feature I was getting wrong printing result in Windows10, but now I try another feature;
    Required Ligature <rliga>,
    After using this feature <rliga> instead of <liga> now everything goes fine with windows10 word 2013,16. Now I can print numbers with outer circle as it is required now.


  • My problem is solved but I need to know, is there a big difference between <liga> and <rliga>. I think both used for ligature substitution, any comments from Font experts.
  • André G. Isaak
    André G. Isaak Posts: 634
    edited September 2019
    'liga' is on by default but can be turned off by the user.
    'rlig' is always on and cannot be turned off by the user.

    'rlig' was originally proposed for Semitic languages (Arabic and Syriac). Its support for other scripts is somewhat inconsistent across applications.

    It's not clear to me why your feature would work when implemented as 'rlig' but not as 'liga', but I'm glad you've solved your problem.