private FloatList adjustedLogicalRangeToVisualRanges(int startOffset, int endOffset) {
      FloatList ranges = logicalRangeToVisualRanges(startOffset, endOffset);
      for (int i = 0; i < ranges.size() - 1; i += 2) {
        float startX = ranges.getFloat(i);
        float endX = ranges.getFloat(i + 1);
        if (startX == endX) {
          if (startX > 0) {
            startX--;
          }
          else {
            endX++;
          }
        }
        else {
          endX--;
        }
        ranges.set(i, startX);
        ranges.set(i + 1, endX);
      }
      return ranges;
    }
private FloatList adjustedLogicalRangeToVisualRanges(int startOffset, int endOffset)