function puncLikeGlyph(glyph, baseline, scaleFactor) {
  const contours = glyph.contours || [];
  // Not a full/half-width punctuation case
  if (glyph.advanceWidth < 1000 && glyph.advanceWidth !== 500) return {
    advanceWidth: glyph.advanceWidth,
    advanceHeight: glyph.advanceHeight,
    verticalOrigin: glyph.verticalOrigin + 120 - Math.round(baseline),
    contours: contours
  };

  // This leading is the maximum em box compression
  const leading = 250;
  const targetAdvance = Math.round(glyph.advanceWidth * scaleFactor);
  const targetVerticalOrigin = glyph.verticalOrigin+120 - Math.round(baseline);
  const translateLeft = 
    PostFilters.translation(
      targetAdvance - glyph.advanceWidth, 120 - baseline);
  const centering = 
    PostFilters.translation(
      (targetAdvance - glyph.advanceWidth)/2, 120 - baseline);

  const { minX, maxX } = boundingBox(contours);
  if (glyph.advanceWidth === 500 
  || minX >= leading * 0.5 && maxX <= 1000 - leading * 0.5) return {
    advanceWidth: targetAdvance,
    advanceHeight: glyph.advanceHeight,
    verticalOrigin: targetVerticalOrigin,
    contours: PostFilters.round()(centering(contours))
  }; else if (maxX <= 1000 - leading) return {
    advanceWidth: targetAdvance,
    advanceHeight: glyph.advanceHeight,
    verticalOrigin: targetVerticalOrigin,
    contours: PostFilters.round()(
      PostFilters.translation(0, 120 - baseline)(contours))
  }; else if (minX >= leading) return {
    advanceWidth: targetAdvance,
    advanceHeight: glyph.advanceHeight,
    verticalOrigin: targetVerticalOrigin,
    contours: PostFilters.round()(translateLeft(contours))
  }; else return centerScaleGlyph(glyph, baseline, scaleFactor);
}
Transform punctuation-like
@param { Glyph } glyph 
@param { number } scaleFactor 
@returns { Glyph }