Geoserver SLD: 

      <sld:LineSymbolizer>
        <sld:Stroke>
          <sld:CssParameter name="stroke">
            <ogc:PropertyName>geo_color</ogc:PropertyName>
          </sld:CssParameter>
          <sld:CssParameter name="stroke-width">2</sld:CssParameter>
        </sld:Stroke>
      </sld:LineSymbolizer>
      <TextSymbolizer>
        <Label>
          <ogc:Literal>&#x227b;</ogc:Literal>
        </Label>
        <Font>
          <CssParameter name="font-family">Lucida Sans</CssParameter>
          <CssParameter name="font-size">20</CssParameter>
        </Font>
        <LabelPlacement>
        <LinePlacement>
        <PerpendicularOffset>0</PerpendicularOffset>
        </LinePlacement>
        </LabelPlacement>
        <Fill>
          <CssParameter name="fill">
            <ogc:PropertyName>geo_color</ogc:PropertyName>
          </CssParameter>
        </Fill>
        <VendorOption name="followLine">true</VendorOption>
        <VendorOption name="forceLeftToRight">false</VendorOption>
        <VendorOption name="conflictResolution">false</VendorOption>
      </TextSymbolizer>

I have the above style set for a WMS layer containing line strings. For most zoom levels the direction arrow aligns properly with its corresponding line. But on zooming out beyond a point, the arrows seem to be displaced away from their respective lines. Shown here: 

![Screenshot showing the issue][1]


I am fairly sure that this has to do something with `VendorOption` parameters but unable to put a finger on it.


  [1]: https://i.sstatic.net/BBKF6.png