Convert Type to Centerline Instead of Outline

Is there any way to convert type so that Illustrator created a centerline instead of an outline?

There is no
good automatic way. It's easy to see why:
1. Set several lines of text, using various fonts.
2. Type: Convert to Paths.
3. White Pointer: Marquee select around all the former text so you can see all the anchorPoints.
Now look at any particular character, especially one with a counter (a hole in it) like A, B, b, etc. Imagine yourself the programmer and try to come up with a scheme that would intelligently take the anchorPoints that you see and interpolate them into a path that the user would consider a "centerline." Bear in mind, the scheme has to work for a "B" that is set in a blocky sans serif, as well as a "B" that is set in a swirly script.
So such a thing would no doubt resort to some kind of auto-trace routine that traces "centerlines." It would probably also need some kind of shape-recognition routine built in so that when the trace reached, for example, the join between the leg and the bowl of a "b" it would know where and how to make the "fork in the road."
For a starting point in trying to do it with Live Trace in CS3:
1. Select the text. Object>Rasterize. Choose Bitmap for color mode.
2. Object>LiveTrace>LiveTraceOptions. In the dialog, turn on the Preview checkbox. Set Mode to Black and White. Turn off the Fills checkbox. Turn on the Ignore White checkbox. Set Maximum Stroke Weight all the way to 100px. Set PathFitting all the way to 10. Play with the other sliders and preview the results.
Frankly, though, I've never seen an autotrace program really yield the kind of clean results most people would have in mind as "glyph centerlines."
For some tips on doing it manually, see
this PDF.
JET

Similar Messages

  • Problem with smart guides in CS5 with converting type object to outlines.

    Hi There,
    I recently upgraded to Illustrator CS5, and am having some issues with the smart guides.  I create some type with the text tool, then convert that type object to outlines.  Now, when I want another graphical object to "snap" to any of the anchors of the outlined text graphic, the smart guides don't kick in!  The problem does not seem to occurr if I make a standard graphic with other tools, only when I create a graphic from a type object.  I need to be able to snap to graphical objects that are created via the convert type to outlines command.  Has anybody experienced this issue before?  It's kinda frustrating.
    The issue didn't seem to happen in CS3, and I've noticed the design of the smart guides is a bit different in the CS5 version as well.  Am I missing something?
    Any tips would be greatly appreciated.  Thanks!

    When you switched to CS5 did you turn on view >> snap to Point
    If your snapping tolernace is set to a small value, you may need to zoom in more to get snapping to work, or just increase the value. Also make sure you have the appropriate items checked (eg:Anchor Path Labels)
    Edit Preferences >> Smart Guides >> Snapping Tolerance

  • Can't convert type to outlines

    I recently purchased CS5, and find there's a feature I'd like in Illustrator that doesn't appear to work. The option Type>Create Outlines is grayed out. I'm using Mac OS X 10.6. Is this another instance of a feature only available on Windows? Is there another way to convert type to outlines, using LIve Trace or something?
    Thanks
    dh
    [email protected]

    David,
    You may try to close down Illy and press Cmd+Option+Shiftduring stratup, or reversibly Move the folder,
    If that does not help, you may look for interfereing applications, see item 7 in Other options

  • Cannot implicitly convert type 'System.Data.SqlClient.SqlDataReader' to 'Microsoft.ReportingServices.DataProcessing.IDataReader'. An explicit conversion exists (are you missing a cast?)

    Cannot implicitly convert type 'System.Data.SqlClient.SqlDataReader' to 'Microsoft.ReportingServices.DataProcessing.IDataReader'. An explicit conversion exists (are you missing a cast?)
    I am getting the above error in c#. Please help me. Thanks in advance
    public IDataReader ExecuteReader(CommandBehavior behavior)
    string query = "select * from Sales.Store";
    SqlConnection readerconn = new SqlConnection("Data Source=localhost;Initial Catalog=AdventureWorks2000;Integrated Security=SSPI");
    SqlCommand readercmd = new SqlCommand(query);
    try
    readerconn.Open();
    readercmd = readerconn.CreateCommand();
    readercmd.CommandText = query;
    readercmd.CommandType = System.Data.CommandType.Text;
    SqlDataReader TestReader = readercmd.ExecuteReader();
    return TestReader; //Getting error at this line
    readerconn.Close();
    catch (Exception e)
    throw new Exception(e.Message);

    Hi,
    Please firstly take a look at the documentation:
    IDbCommand.ExecuteReader
    Method
    Users do not create an   instance of a
    DataReader   class directly. Instead, they obtain the
    DataReader   through the
    ExecuteReader   method of the Command   object. Therefore, you should mark
    DataReader   constructors as internal.
    You need to use this method to get the IDataReader object, all the IDbCommand and IDataReader are in the Microsoft.ReportingServices.DataProcessing namespace. There's another IDataReader object which is in System.Data namespace, but they're actually two different
    objects, that's why you got the exception.
    For how to properly implement this Microsoft.ReportingServices.DataProcessing.IDataReader, please check this documentation:
    Implementing a DataReader Class for a Data Processing Extension
    It also provides code samples there.
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Converting type to paths- CS3 vs. CS5

    I have CS3, but am now trying out fw CS5, and have a weird issue when converting type to paths.
    Original type:
    Converted to paths on cs3:
    Converted to paths on cs5
    This is just an example, I tried with several different fonts, and they all produce different results, with cs5 always doing a much poorer job. is is because of the new type engine? Can anything be done about it?
    it makes me question upgrading a lot!

    Thanks for the feedback. I had tried your first suggestion to no avail, but had not tried the second. Now that I have, selecting the type only instead of the frame still caused a grad shift when converted. I ended up just re-applying all the gradients, but it would be nice to figure out if this is possible for the future. Appreciate the input, though.

  • Cannot convert type class java.lang.String to class oracle.jbo.domain.Clob

    Cannot convert type class java.lang.String to class oracle.jbo.domain.ClobDomain.
    Using ADF Business Components I have a JSFF page fragment with an ADF form based on a table with has a column of type CLOB. The data is retrieved from the database and displayed correctly but when any field is changed and submitted the above error occurs. I have just used the drag and drop technique to create the ADF form with a submit button, am I missing a step?
    I am using the production release of Jdeveloper11G

    Reproduced and filed bug# 7487124
    The workaround is to add a custom converter class to your ViewController project like this
    package oow2008.view;
    import javax.faces.application.FacesMessage;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.convert.Converter;
    import javax.faces.convert.ConverterException;
    import oracle.jbo.domain.ClobDomain;
    import oracle.jbo.domain.DataCreationException;
    public class ClobConverter implements Converter {
         public Object getAsObject(FacesContext facesContext,
                                   UIComponent uIComponent,
                                   String string) {
           try {
             return string != null ? new ClobDomain(string) : null;
           } catch (DataCreationException dce) {
             dce.setAppendCodes(false);
             FacesMessage fm =
               new FacesMessage(FacesMessage.SEVERITY_ERROR,
                                "Invalid Clob Value",
                                dce.getMessage());
             throw new ConverterException(fm);
         public String getAsString(FacesContext facesContext,
                                   UIComponent uIComponent,
                                   Object object) {
           return object != null ?
                  object.toString() :
                  null;
    }then to register the converter in faces-config.xml like this
    <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee">
      <application>
        <default-render-kit-id>oracle.adf.rich</default-render-kit-id>
      </application>
      <converter>
        <converter-id>clobConverter</converter-id>
        <converter-class>oow2008.view.ClobConverter</converter-class>
      </converter>
    </faces-config>then reference this converter in the field for the ClobDomain value like this
              <af:inputText value="#{bindings.Description.inputValue}"
                            label="#{bindings.Description.hints.label}"
                            required="#{bindings.Description.hints.mandatory}"
                            columns="40"
                            maximumLength="#{bindings.Description.hints.precision}"
                            shortDesc="#{bindings.Description.hints.tooltip}"
                            wrap="soft" rows="10">
                <f:validator binding="#{bindings.Description.validator}"/>
                <f:converter converterId="clobConverter"/>
              </af:inputText>

  • While downlaoding any type of file instead of showing the file size 'unknown time remaining' is showing?

    While downlaoding any type of file instead of showing the file size 'unknown time remaining' is showing? Please suggest solution to these problems?

    I followed ALL the Above suggestions to NO AVAIL!
    When I start a download, if I then Click PAUSE, it WILL NOT CANCEL & IT WILL NOT RESUME, just sits there stating "unknown time remaining"
    and I CAN'T GET RID OF IT!
    It would seem that Something Changed with the latest Firefox Beta Update that is causing this Anomalie.. Please FIX ASAP as I find this Very Annoying.
    With ANY Download in Limbo the Firefox Taskbar Icon displays a Partial Download Progress THAT NEVER CHANGES and I can not tell what Other Downloads are doing - It also Warns me that X-Number of Downloads are Still Pending when I go to Close Firefox, but as I stated, these Downloads are DOING NOTHING & CAN'T BE REMOVED!
    HELP! - BJ

  • How to solve this Error?? Error_2_Cannot implicitly convert type 'int' to 'int[]'_

    Hi,
    I created a structure. It contains 1& 2 diamensional arrays. Now I want to pass values to these arrays. But at that time I got the following error.
        Error 2 Cannot implicitly convert type 'int' to 'int[]' 
            publicstructtest
              [FieldOffset(160)]
             [MarshalAs(UnmanagedType.ByValArray,
    SizeConst = 3)]
            publicint[]
    DC;
               [FieldOffset(168)]
              [MarshalAs(UnmanagedType.ByValArray,
    SizeConst = 8)]
              publicfloat[]
    IN;
               [FieldOffset(176)]
              [MarshalAs(UnmanagedType.ByValArray,
    SizeConst = 8)]
            publicbyte[,]
    us;
    privatevoidbutton1_Click(objectsender,
    EventArgse)
    //int[] T_ADC = new int[3];
                array[0].DC =12
                array[0].IN[0] = 11;
                array[0].us[0, 0] = 1;

    @DAANNIII
    >>I wrote the code as follows
    array[0].DC[0]
    =12
    but after that I got an error that  " Object reference not set to an instance of an object".Why this type of error occurs??
    Still confused about how you define variable "array[0]".
    Based on your error information, because your DC is null. As I said before, DC is an int[]. You must assign an array to DC.
    int[] array = new int[] { 2, 43 };
    test s = new test();
    s.DC = array;
    s.DC[0] = 12;//It works fine
    Best regards,
    Kristin
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • OTT does not convert types that created as TABLE

    I use this SQL script:
    create or replace TYPE REC_5WORDS AS OBJECT
         (WO1_FREQ INT,
    WO1_TEXT VARCHAR2(30),
    WO2_FREQ INT,
    WO2_TEXT VARCHAR2(30),
    WO3_FREQ INT,
    WO3_TEXT VARCHAR2(30),
    WO4_FREQ INT,
    WO4_TEXT VARCHAR2(30),
    WO5_FREQ INT,
    WO5_TEXT VARCHAR2(30)
    create or replace TYPE TAB_5WORDS AS TABLE OF REC_5WORDS
    and when I run OTT Utility I have type REC_5WORDS converted, but it does not convert type TAB_5WORDS.
    What I do wrong?

    I made also what is written in a OCCI Objects White Paper:
    Ref<REC_5WORDS> refRec5Words = new(m_pConnection,"TAB_5WORDS") REC_5WORDS();
    where m_pConnection is declared as oracle::occi::Connection *.
    But I got the compilation error error C2061: syntax error : identifier 'm_pConnection'
    in VC++.NET 2003

  • Getting "unable to convert type -15 to a numeric type"

    I see below error... i have checked the data types. it all looks good.
    (Wrapped) unable to convert type -15 to a numeric type) unable to convert type -15 to a numeric type
    at com.tangosol.util.Base.ensureRuntimeException(Base.java:293)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.tagException(Grid.CDB:36)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.onInvokeRequest(PartitionedCache.CDB:88)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$InvokeRequest.run(PartitionedCache.CDB:1)
    at com.tangosol.coherence.component.net.message.requestMessage.DistributedCacheKeyRequest.onReceived(DistributedCacheKeyRequest.CDB:12)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.onMessage(Grid.CDB:11)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.onNotify(Grid.CDB:33)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.PartitionedService.onNotify(PartitionedService.CDB:3)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.onNotify(PartitionedCache.CDB:3)
    at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:42)
    at java.lang.Thread.run(Thread.java:662)
    at <process boundary>
    at com.tangosol.io.pof.ThrowablePofSerializer.deserialize(ThrowablePofSerializer.java:57)
    at com.tangosol.io.pof.PofBufferReader.readAsObject(PofBufferReader.java:3306)
    at com.tangosol.io.pof.PofBufferReader.readObject(PofBufferReader.java:2603)
    at com.tangosol.io.pof.ConfigurablePofContext.deserialize(ConfigurablePofContext.java:358)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.Service.readObject(Service.CDB:1)
    at com.tangosol.coherence.component.net.Message.readObject(Message.CDB:1)
    at com.tangosol.coherence.component.net.message.SimpleResponse.read(SimpleResponse.CDB:6)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.deserializeMessage(Grid.CDB:42)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.onNotify(Grid.CDB:31)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.PartitionedService.onNotify(PartitionedService.CDB:3)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.onNotify(PartitionedCache.CDB:3)
    at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:42)
    at java.lang.Thread.run(Thread.java:662)
    at <process boundary>
    at (unknown function)(AbstractPofRequest.cpp:189)
    at coherence::lang::TypedHandle<coherence::net::messaging::Response>coherence::component::net::extend::AbstractPofRequest::Status::getResponse()
    at coherence::lang::TypedHandle<coherence::net::messaging::Response>coherence::component::net::extend::AbstractPofRequest::Status::waitForResponse(long long)
    at coherence::lang::TypedHolder<coherence::lang::Object>coherence::component::net::extend::PofChannel::request(coherence::lang::TypedHandle<coherence::net::messaging::Request
    ,long long)at coherence::lang::TypedHolder<coherence::lang::Object>coherence::component::net::extend::PofChannel::request(coherence::lang::TypedHandle<coherence::net::messaging::Request
    )at __1cJcoherenceJcomponentDnetGextendQRemoteNamedCacheLBinaryCacheGinvoke6Mn0AElangLTypedHandle4Ckn0GGObject___n0GLTypedHandle4n0AEutilMInvocableMapOEntryProcessor____n0GLTy
    pedHolder4n0H____
    at __1cJcoherenceEutilUConverterCollectionsVConverterInvocableMapGinvoke6Mn0AElangLTypedHandle4Ckn0EG
    Edited by: LSV on Oct 5, 2012 1:11 AM

    The gateway can't convert datatypes. You need to cast the source column to numeric and then use the view.

  • Is there a wa to convert a numbered list into sections / outline mode indented?

    Is there a wa to convert a numbered list into sections / outline mode indented?

    I think you need to describe in more detail what you want to achieve. Are you talking about Document outline? I myself haven't used that feature. I would read about it in the Pages User Guide to get familiar on how it works. Or I would read the Missing Manual for iWork which is a very good book about iWork and Pages.

  • Working on a logo. Converted type to outlines. Can I paste more than one item into the outlines?

    I'm working on a logo. Text converted to outlines. I pasted one element into the outlines and when I went to past a 2nd item into it, it replaced the original. How can I go about doing this?
    CS3

    >No..the objects you want to paste into it.
    AHHHHHH... cool. Thanks.

  • Convert type to outlines

    This question was posted in response to the following article: http://help.adobe.com/en_US/illustrator/cs/using/WS18156339-458C-45e1-8CD0-DD7931678BBE.ht ml

    That white arrow is called the direct selection tool. Search for "direct select" in Adobe Help? Alternately, a good Illustrator book -- I like the Peachpit Press' Real World series of books a lot.
    In addition to the direct selection tool, there are some sub-tools under the pen tool that help to edit vector points & paths. Click & hold the pen tool to reveal add & delete anchor points, & the convert anchor point tools. Those & the direct selection tool are really the meat & potatoes of Illustrator's editing features.

  • Cannot implicitly convert type 'int' to 'DocumentFormat.OpenXml.StringValue'

    Hi,
    I have a write code-behind in infopath form to convert word document using openXML
    Below code i have used to convert:
    I underlined the code which is getting error!!!
    using Microsoft.Office.InfoPath;
    using System;
    using System.Xml;
    using System.Xml.XPath;
    using System.IO;
    using System.Text;
    using DocumentFormat.OpenXml.Packaging;
    using DocumentFormat.OpenXml.Wordprocessing;
    namespace SampleForm
        public partial class FormCode
            // Member variables are not supported in browser-enabled forms.
            // Instead, write and read these values from the FormState
            // dictionary using code such as the following:
            // private object _memberVariable
            //     get
            //         return FormState["_memberVariable"];
            //     set
            //         FormState["_memberVariable"] = value;
            // NOTE: The following procedure is required by Microsoft InfoPath.
            // It can be modified using Microsoft InfoPath.
            private TableCell createCell(string content)
                // Create a new table cell
                TableCell tc = new TableCell();
                // Specify the width of the table cell
                TableCellWidth tcw = new TableCellWidth();
                tcw.Width = 2400;
                tcw.Type = TableWidthUnitValues.Dxa;
                tc.Append(new TableCellProperties(tcw));
                // Specify the content of the table cell
                tc.Append(new Paragraph(new Run(new Text(content))));
                // Return the new table cell
                return tc;
            private TableRow createRow(string cell1, string cell2, string cell3)
                // Create a new table row
                TableRow tr = new TableRow();
                // Add the table cells to the table row
                tr.Append(createCell(cell1));
                tr.Append(createCell(cell2));
                tr.Append(createCell(cell3));
                // Return the new table row
                return tr;
            public void InternalStartup()
                ((ButtonEvent)EventManager.ControlEvents["CTRL6_5"]).Clicked += new ClickedEventHandler(CTRL6_5_Clicked);
            public void CTRL6_5_Clicked(object sender, ClickedEventArgs e)
                // Write your code here.
                // Get a reference to the main data source
                XPathNavigator root = MainDataSource.CreateNavigator();
                // Copy the template and create a new document
                string newFilePath = @"C:\NewDoc.docx";
                File.Copy(@"C:\QuickQuote.docx", newFilePath, true);
                using (WordprocessingDocument myDoc =
                WordprocessingDocument.Open(newFilePath, true))
                    // Add an aFChunk part to the package
                    string altChunkId = "AltChunkId1";
                    MainDocumentPart mainPart = myDoc.MainDocumentPart;
                    AlternativeFormatImportPart chunk = mainPart
                    .AddAlternativeFormatImportPart(
                    AlternativeFormatImportPartType.Xhtml, altChunkId);
                    // Retrieve the rich text field contents
                    // and store it into the aFChunk part
                    StringBuilder sb = new StringBuilder();
                    sb.Append("<html>");
                    sb.Append(root.SelectSingleNode(
                    "//my:RtxtField", NamespaceManager).InnerXml);
                    sb.Append("</html>");
                    string html = sb.ToString();
                    using (MemoryStream ms =
                    new MemoryStream(Encoding.UTF8.GetBytes(html)))
                        chunk.FeedData(ms);
                    // Add the aFChunk to the document
                    AltChunk altChunk = new AltChunk();
                    altChunk.Id = altChunkId;
                    mainPart.Document.Body.Append(altChunk);
                    // Create an empty table and specify formatting for its borders
                    Table table = new Table();
                    TableBorders borders = new TableBorders();
                    TopBorder tb = new TopBorder();
                    tb.Val = new DocumentFormat.OpenXml
                    .EnumValue<BorderValues>(BorderValues.Dashed);
                    tb.Size = 24;
                    borders.AppendChild<TopBorder>(tb);
                    BottomBorder bb = new BottomBorder();
                    bb.Val = new DocumentFormat.OpenXml
                    .EnumValue<BorderValues>(BorderValues.Dashed);
                    bb.Size = 24;
                    borders.AppendChild<BottomBorder>(bb);
                    LeftBorder lb = new LeftBorder();
                    lb.Val = new DocumentFormat.OpenXml
                    .EnumValue<BorderValues>(BorderValues.Dashed);
                    lb.Size = 24;
                    borders.AppendChild<LeftBorder>(lb);
                    RightBorder rb = new RightBorder();
                    rb.Val = new DocumentFormat.OpenXml
                    .EnumValue<BorderValues>(BorderValues.Dashed);
                    rb.Size = 24;
                    borders.AppendChild<RightBorder>(rb);
                    InsideHorizontalBorder ihb = new InsideHorizontalBorder();
                    ihb.Val = new DocumentFormat.OpenXml
                    .EnumValue<BorderValues>(BorderValues.Single);
                    ihb.Size = 24;
                    ihb.Color = new DocumentFormat.OpenXml.StringValue("#FF0000");
                    borders.AppendChild<InsideHorizontalBorder>(ihb);
                    InsideVerticalBorder ivb = new InsideVerticalBorder();
                    ivb.Val = new DocumentFormat.OpenXml
                    .EnumValue<BorderValues>(BorderValues.Dashed);
                    ivb.Size = 24;
                    borders.AppendChild<InsideVerticalBorder>(ivb);
                    TableProperties tblProp = new TableProperties(borders);
                    table.AppendChild<TableProperties>(tblProp);
                    // Loop through the repeating table and create rows in the table
                    XPathNodeIterator iter = root.Select("//my:group2",
                    NamespaceManager);
                    while (iter.MoveNext())
                        string cell1 = iter.Current.SelectSingleNode(
                        "my:cell1", NamespaceManager).Value;
                        string cell2 = iter.Current.SelectSingleNode(
                        "my:cell2", NamespaceManager).Value;
                        string cell3 = iter.Current.SelectSingleNode(
                        "my:cell3", NamespaceManager).Value;
                        TableRow tr = createRow(cell1, cell2, cell3);
                        table.Append(tr);
                    // Add the table to the document
                    mainPart.Document.Body.Append(table);
                    // Save the document
                    mainPart.Document.Save();

    Hello Coolsweety,
    Maybe this technet article is useful, at the end I see how they specify the width property:
    http://msdn.microsoft.com/en-us/library/office/cc850841(v=office.15).aspx
    - Dennis | Netherlands | Blog |
    Twitter

  • Converting fonts with a stroke to outlines screws up the stroke

    Ive been having a problem with this for a while now and was wondering what to do about it.
    I have some type with a fairly heavy stroke on it. When I convert that to outlines, the stroke gets... what appears to be thicker.. even though I dont think it really is... but the stroke just looks screwed up. How do I get around that?

    I did use the lowercase "text" and wasn't causing the distortion in lettershape that Chris shows in the post above. After not being able to reproduce Chris' problem in ID5 or 6, I realized it's because I was not using a fill. When you apply a fill, the outline automatically aligns with the outside. With no fill, it's always centered. So, no conversion problem.
    Yes, the counters problem is still present in ID6. Same solution as ID5: after switching alignment to "outside", release path and switch the alignment of the counters to "inside", fill counters with white/paper, group everything. If you can't fill the counters, then place one copy of the outlines (stroke alignment centered), double the stroke width, place a second copy exactly on top, remove stroke and group the two objects.
    I did see something else in both ID5 and ID6, besides the "counters problem". In certain typefaces - after switching the stroke to outside" - the lowercase "x" was being rendered with the alignment "inside". In affect, the "X" had developed the "counter problem". Releasing the path and switching stroke to "inside" rendered it properly. Times New Roman PS didn't have the problem, but Times New Roman OTF and Times TT did. Then the capital "T" in Times New Roman OTF also developed the problem, but not with Times TT. It's getting weird.

Maybe you are looking for