Added cmark_render_code_point.
diff --git a/src/man.c b/src/man.c
index 6fe666d..b2e0ce2 100644
--- a/src/man.c
+++ b/src/man.c
@@ -14,7 +14,6 @@
 #define LIT(s) renderer->out(renderer, s, false, LITERAL)
 #define CR() renderer->cr(renderer)
 #define BLANKLINE() renderer->blankline(renderer)
-#define ASCII(s) cmark_render_ascii(renderer, s)
 
 // Functions to convert cmark_nodes to groff man strings.
 static
@@ -26,55 +25,51 @@
 	(void)(nextc);
 
 	if (escape == LITERAL) {
-		utf8proc_encode_char(c, renderer->buffer);
-		renderer->column += 1;
+		cmark_render_code_point(renderer, c);
 		return;
 	}
 
 	switch(c) {
 	case 46:
 		if (renderer->begin_line) {
-			ASCII("\\&.");
+			cmark_render_ascii(renderer, "\\&.");
 		} else {
-			utf8proc_encode_char(c, renderer->buffer);
-			renderer->column += 1;
+			cmark_render_code_point(renderer, c);
 		}
 		break;
 	case 39:
 		if (renderer->begin_line) {
-			ASCII("\\&'");
+			cmark_render_ascii(renderer, "\\&'");
 		} else {
-			utf8proc_encode_char(c, renderer->buffer);
-			renderer->column += 1;
+			cmark_render_code_point(renderer, c);
 		}
 		break;
 	case 45:
-		ASCII("\\-");
+		cmark_render_ascii(renderer, "\\-");
 		break;
 	case 92:
-		ASCII("\\e");
+		cmark_render_ascii(renderer, "\\e");
 		break;
 	case 8216: // left single quote
-		ASCII("\\[oq]");
+		cmark_render_ascii(renderer, "\\[oq]");
 		break;
 	case 8217: // right single quote
-		ASCII("\\[cq]");
+		cmark_render_ascii(renderer, "\\[cq]");
 		break;
 	case 8220: // left double quote
-		ASCII("\\[lq]");
+		cmark_render_ascii(renderer, "\\[lq]");
 		break;
 	case 8221: // right double quote
-		ASCII("\\[rq]");
+		cmark_render_ascii(renderer, "\\[rq]");
 		break;
 	case 8212: // em dash
-		ASCII("\\[em]");
+		cmark_render_ascii(renderer, "\\[em]");
 		break;
 	case 8211: // en dash
-		ASCII("\\[en]");
+		cmark_render_ascii(renderer, "\\[en]");
 		break;
 	default:
-		utf8proc_encode_char(c, renderer->buffer);
-		renderer->column += 1;
+		cmark_render_code_point(renderer, c);
 	}
 	renderer->begin_line = (c == 10);
 }
diff --git a/src/render.c b/src/render.c
index e1545ea..7331a27 100644
--- a/src/render.c
+++ b/src/render.c
@@ -125,6 +125,13 @@
 	renderer->column += renderer->buffer->size - origsize;
 }
 
+void
+cmark_render_code_point(cmark_renderer *renderer, uint8_t c)
+{
+	utf8proc_encode_char(c, renderer->buffer);
+	renderer->column += 1;
+}
+
 char*
 cmark_render(cmark_node *root,
 	     int options,
diff --git a/src/render.h b/src/render.h
index 17728b6..9409093 100644
--- a/src/render.h
+++ b/src/render.h
@@ -43,6 +43,9 @@
 void
 cmark_render_ascii(cmark_renderer *renderer, const char* s);
 
+void
+cmark_render_code_point(cmark_renderer *renderer, uint8_t c);
+
 char*
 cmark_render(cmark_node *root,
 	     int options,